Jump to content
  • 0

pomoc [Druhé povolání]


DaNeX

Dotaz

Zdravím našel jsem si zde návod na povolání přes KEY.

 

Ale netuším jak udělat další tkz druhé. Zkoušel jsem změnu ID ale někde mám chybu.

Při vchození na PickUp mačkám Levý Alt jak ujetý ale nepřipojím se.

 

Dám vám tu celý kód včetně obou JOBU ( Funguje jen ten první tkz. Mechanik )

new job[MAX_PLAYERS];
new Mechanikpick;
new Taxikarpick;

ModeInit

    Mechanikpick = CreatePickup(1314,1,-2343.1338,-82.3546,35.2078); 
    Taxikarpick = CreatePickup(1314,1,-2320.0752,-40.2367,35.3203); 

OnPlayerPickUpPickUp

    if(pickupid == Mechanikpick)
    {
	SCM(playerid,0x800080AA,"blabla");
	}
    if(pickupid == Taxikarpick)
	{
	SCM(playerid, 0xFF00FF,"Taxikář zaměstnej se Levým ALTem");
	}

OnPlayerKeyStateChange

{
if(newkeys == KEY_WALK){
if(IsPlayerInSphere(playerid,-2343.1338,-82.3546,35.2078, 3) == 1){
if(job[playerid] == 1) return SendClientMessage(playerid, 0x800080AA, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 1; // Zaněstná ho
SetPlayerSkin(playerid, 50);
GivePlayerWeapon(playerid, 26,500);
SetPlayerArmour(playerid, 100);
SetPlayerColor(playerid, 0x800080FF);
}
}

if(newkeys == KEY_WALK){//L.ALT pro zaměstnání
if(IsPlayerInSphere(playerid,-2320.0752,-40.2367,35.3203, 3) == 2){
if(job[playerid] == 2) return SendClientMessage(playerid, 0xFF00FF, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 2; 
SetPlayerSkin(playerid, 111);
GivePlayerWeapon(playerid, 16,300);
}
}

Chyba je podle mě někde v posledním odstavci (State change ten druhý = Taxikar )

Jsem zmatený ohledně těch ID. Nevím jestli jsem měl například dávat ID 2 a ne nějaké jiné.

 

Nebo se to překopáva úplně jinak. Tak díky za odpověď protože jsem zmatený a nový v tomhle.

Link to comment
Share on other sites

8 odpovědí na tuto otázku

Recommended Posts

  • 0

trošku pozměnil a snad bude fungovat :)

#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

new job[MAX_PLAYERS];
new Mechanikpick;
new Taxikarpick;

public OnGameModeInit()
{
    Mechanikpick = CreatePickup(1314,1,-2343.1338,-82.3546,35.2078); 
    Taxikarpick = CreatePickup(1314,1,-2320.0752,-40.2367,35.3203);

return 1;
}
 


public OnPlayerPickUpPickup(playerid, pickupid)
{
    if(pickupid == Mechanikpick)
    {
	SCM(playerid,0x800080AA,"blabla");
	}
    if(pickupid == Taxikarpick)
	{
	SCM(playerid, 0xFF00FF,"Taxikář zaměstnej se Levým ALTem");
	}

 return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_WALK)){
if(IsPlayerInSphere(playerid,-2343.1338,-82.3546,35.2078, 3) == 1){
if(job[playerid] == 1) return SendClientMessage(playerid, 0x800080AA, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 1; // Zaněstná ho
SetPlayerSkin(playerid, 50);
GivePlayerWeapon(playerid, 26,500);
SetPlayerArmour(playerid, 100);
SetPlayerColor(playerid, 0x800080FF);
}
}

if(PRESSED(KEY_WALK)){//L.ALT pro zaměstnání
if(IsPlayerInSphere(playerid,-2320.0752,-40.2367,35.3203, 3) == 2){
if(job[playerid] == 2) return SendClientMessage(playerid, 0xFF00FF, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 2; 
SetPlayerSkin(playerid, 111);
GivePlayerWeapon(playerid, 16,300);
}
}

return 1;
}

Kdyby něco napiš ... 

Link to comment
Share on other sites

  • 0

A nebo zkus

#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

new job[MAX_PLAYERS];
new Mechanikpick;
new Taxikarpick;

public OnGameModeInit()
{
    Mechanikpick = CreatePickup(1314,1,-2343.1338,-82.3546,35.2078);
    Taxikarpick = CreatePickup(1314,1,-2320.0752,-40.2367,35.3203);

return 1;
}



public OnPlayerPickUpPickup(playerid, pickupid)
{
    if(pickupid == Mechanikpick)
    {
	SCM(playerid,0x800080AA,"Mechanik zaměstnej se Levým ALTem");
	}
    if(pickupid == Taxikarpick)
	{
	SCM(playerid, 0xFF00FF,"Taxikář zaměstnej se Levým ALTem");
	}

 return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_WALK)){//L.ALT pro zaměstnání
if(IsPlayerInSphere(playerid,-2343.1338,-82.3546,35.2078, 3) == 1){
if(job[playerid] == 1) return SendClientMessage(playerid, 0x800080AA, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 1; // Zaměstná ho
SetPlayerSkin(playerid, 50);
GivePlayerWeapon(playerid, 26,500);
SetPlayerArmour(playerid, 100);
SetPlayerColor(playerid, 0x800080FF);
}
else if(IsPlayerInSphere(playerid,-2320.0752,-40.2367,35.3203, 3)){
if(job[playerid] == 2) return SendClientMessage(playerid, 0xFF00FF, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 2; // Zaměstná ho
SetPlayerSkin(playerid, 111);
GivePlayerWeapon(playerid, 16,300);
}
}
return 1;
}

nebo

#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))

new job[MAX_PLAYERS];
new Mechanikpick;
new Taxikarpick;

public OnGameModeInit()
{
    Mechanikpick = CreatePickup(1314,1,-2343.1338,-82.3546,35.2078);
    Taxikarpick = CreatePickup(1314,1,-2320.0752,-40.2367,35.3203);

return 1;
}



public OnPlayerPickUpPickup(playerid, pickupid)
{
    if(pickupid == Mechanikpick)
    {
	SCM(playerid,0x800080AA,"Mechanik zaměstnej se Levým ALTem");
	}
    if(pickupid == Taxikarpick)
	{
	SCM(playerid, 0xFF00FF,"Taxikář zaměstnej se Levým ALTem");
	}

 return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(PRESSED(KEY_WALK)){//L.ALT pro zaměstnání
if(IsPlayerInRangeOfPoint(playerid, 3.0, -2343.1338,-82.3546,35.2078)){
if(job[playerid] == 1) return SendClientMessage(playerid, 0x800080AA, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 1; // Zaměstná ho
SetPlayerSkin(playerid, 50);
GivePlayerWeapon(playerid, 26,500);
SetPlayerArmour(playerid, 100);
SetPlayerColor(playerid, 0x800080FF);
}
else if(IsPlayerInRangeOfPoint(playerid, 3.0, -2320.0752,-40.2367,35.3203)){
if(job[playerid] == 2) return SendClientMessage(playerid, 0xFF00FF, "[** ERROR **] Zde už jsi zaměstnán!");
job[playerid] = 2; // Zaměstná ho
SetPlayerSkin(playerid, 111);
GivePlayerWeapon(playerid, 16,300);
}
}
return 1;
}
Link to comment
Share on other sites

  • 0

Příšte si neco otom přečti http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint

 

protože IsPlayerInRangeOfPoint vrací jen 2 hodnoty to je 0 a 1.

 

Return Values:

  • true - The player is in range of the point.
  • false - The player is not in range of the point.
Link to comment
Share on other sites

  • 0

Začal jsem od konce protože se nejčastěji správný kód objevuje v posledním řešení a měl jsem pravdu.

Díky Expertik

 

Už to funguje tak díky za pomoc mám dalších desítky otázek ale to se prvně vyzkouším dohledat na google.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...