Jump to content
  • 0

pomoc Problém s playerid


snake3321

Dotaz

Zdravím,

mám menší problém s tím, že potřebuji zníčit objekt když se zníčí auto, problém je, že proměnná objektu je fixovaná na playerid, dám příklad:


public OnVehicleDeath(vehicleid, killerid)
{
if(vehicleid == adminauto)
{
DestroyObject(objekt1[playerid]);
DestroyObject(objekt2[playerid]);
DestroyObject(objekt3[playerid]);
DestroyObject(objekt4[playerid]);
DestroyObject(objekt5[playerid]);
}
return 1;
}

kam to mám tedy dát, aby to fungovalo? Předem děkuji.

Link to comment
Share on other sites

17 odpovědí na tuto otázku

Recommended Posts

  • 0

v této části kódu není proměnná playerid neexistuje. Musíš to potřebné ID nějakým způsobem získat. S tím jak ho získáš ti ale asi nepomůžeme, protože nevíme, jak to máš udělané a jak to celé zamýšlíš udělat.

Link to comment
Share on other sites

  • 0

Dobrá, takže celý pawn kód příkládám do spoileru. Zamýšlím jednoduchou věc. Mám script na adminauto na kterém jsou objekty, no a ty objekty potřebuji smazat když se auto zníčí... Takže asi tak..

 

 

#include <a_samp>
#include <zcmd>
 
new objekt1[MAX_PLAYERS];
new objekt2[MAX_PLAYERS];
new objekt3[MAX_PLAYERS];
new objekt4[MAX_PLAYERS];
new objekt5[MAX_PLAYERS];
new Text3D:vehicle3Dtext[MAX_VEHICLES], adminauto;
 
CMD:ac(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000AA, "[ ! ] {FFFFFF}Nejsi admin!");
{
   new Float:X;
   new Float:Y;
   new Float:Z;
   new Float:Xc;
   new Float:Yc;
   new Float:Zc;
   GetPlayerPos(playerid, X, Y, Z);
   GetVehiclePos(adminauto, Xc, Yc, Zc);
   adminauto = CreateVehicle(411, X, Y, Z, 0, 6, 6, 9999);
   objekt1[playerid] = CreateObject(359, 0, 0, 0, 0, 0, 0, 0);
   objekt2[playerid] = CreateObject(359, 0, 0, 0, 0, 0, 0, 0);
   objekt3[playerid] = CreateObject(18646, 0, 0, 0, 0, 0, 0, 0);
   objekt4[playerid] = CreateObject(19329, 0, 0, 0, 0, 0, 0, 0);
   objekt5[playerid] = CreateObject(19329, 0, 0, 0, 0, 0, 0, 0);
   AttachObjectToVehicle(objekt1[playerid], adminauto, -0.55940, -0.07410, 0.64250, 0, 0, 90);
   AttachObjectToVehicle(objekt2[playerid], adminauto, 0.58290, -0.07410, 0.64250, 0, 0, 90);
   AttachObjectToVehicle(objekt3[playerid], adminauto, -0.01020, 0.10570, 0.75720, 0, 0, 0);
   AttachObjectToVehicle(objekt4[playerid], adminauto, -1.11060, 0.05780, -0.14380, 0, 0, 90);
   AttachObjectToVehicle(objekt5[playerid], adminauto, 1.10040, 0.05780, -0.14380, 0, 0, 90);
   SetObjectMaterialText(objekt4[playerid], "Admin Auto", 0, OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, 0x00b8ffAA, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   SetObjectMaterialText(objekt5[playerid], "Admin Auto", 0, OBJECT_MATERIAL_SIZE_256x128, "Arial", 24, 1, 0x00b8ffAA, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
   vehicle3Dtext[ adminauto ] = Create3DTextLabel("Admin Auto", 0x00FFFFAA, Xc, Yc, Zc, 50, -1, 0);
   Attach3DTextLabelToVehicle(vehicle3Dtext[ adminauto ], adminauto, Xc, Yc, Zc+1);
   PutPlayerInVehicle(playerid, adminauto, 0);
}
return 1;
}
 
CMD:dac(playerid, params[])
{
DestroyVehicle(adminauto);
DestroyObject(objekt1[playerid]);
DestroyObject(objekt2[playerid]);
DestroyObject(objekt3[playerid]);
DestroyObject(objekt4[playerid]);
DestroyObject(objekt5[playerid]);
return 1;
}

 

 

Link to comment
Share on other sites

  • 0

Do pole objeků ukládej třeba id auta, který si budeš počítat sám, podle toho kolik je vytvořených admin vozů

 

Ilustrační kód:

(vzhledem k tomu, že to ani nemáš ošetřený kdyby se někdo pokusil vytvořit další auto, by mohl stačit tenhle jednoduchý system)

(pokud smí existovat jen jedno auto tak netřeba ani to pole)

new pocetaut;

cmd {
   object[pocetaut] =
   object2[pocetaut] =
   adminauto[pocetaut] = CreateVehicle
   pocetaut++;
}

onvehicledeath {
   for(i < pocetaut) if(vehicleid == adminauto[i])
   destroyobject(object[i])
}
Link to comment
Share on other sites

  • 0

Pokusím se to něják pochopit, každopádně jsem si dělal dialog input, no a do toho by hráč napsal kolik chce, aby mělo jeho auto životů, každopádně něják to nefunguje :d, když si do OnDialogResponse, napišu k tomu dialogu:

SetVehicleHealth(vehicleid, inputtext);

hodí mi to error:

C:\Users\****\Desktop\adminauto.pwn(84) : error 035: argument type mismatch (argument 2)
Link to comment
Share on other sites

  • 0

Pokusím se to něják pochopit, každopádně jsem si dělal dialog input, no a do toho by hráč napsal kolik chce, aby mělo jeho auto životů, každopádně něják to nefunguje :d, když si do OnDialogResponse, napišu k tomu dialogu:

SetVehicleHealth(vehicleid, inputtext);
hodí mi to error:

C:\Users\****\Desktop\adminauto.pwn(84) : error 035: argument type mismatch (argument 2)

 

~> Zamysli se trošku alespoň. Já vím, že to je velice těžké, ale i přesto to zkus... co asi může být inputtext? Správně text. A textem asi těžko nastavíš život. Musíš to konverzovat.

Link to comment
Share on other sites

  • 0

Opravdu si myslíš, že jsem nad tím ani trochu nepřemýšlel? Vážně? Nejsem ten typ začínajících pawnerů co když něco nevěděj, ihned se ptaj, takovej typ rozhodně nejsem. Googlil jsem to dobrý 3 hodiny, nic jsem nenašel a odpoveď jsem nedostal jelikož bylo pozdě, teď jsem nad tím dalších asi 25 minut přemýšlel a prostě už fakt nevím, tak prosím nechoď dál jako vždy okolo horké kaše a rovnou mi to řekni prosím. Ušetříš svou klávesnici... Děkuju.

Link to comment
Share on other sites

  • 0

 

Pokusím se to něják pochopit, každopádně jsem si dělal dialog input, no a do toho by hráč napsal kolik chce, aby mělo jeho auto životů, každopádně něják to nefunguje :d, když si do OnDialogResponse, napišu k tomu dialogu:

SetVehicleHealth(vehicleid, inputtext);

hodí mi to error:

C:\Users\****\Desktop\adminauto.pwn(84) : error 035: argument type mismatch (argument 2)
SetVehicleHealth(vehicleid, strval(inputtext));
Edited by Sc0t
  • Líbí se mi to! (+1) 1
Link to comment
Share on other sites

  • 0

Opravdu si myslíš, že jsem nad tím ani trochu nepřemýšlel? Vážně?

Ano.

 

Nejsem ten typ začínajících pawnerů co když něco nevěděj, ihned se ptaj

Ne, naprosto vůbec. Přesně, máš pravdu. Jak jsem si to mohl jenom myslet, že ano?... :) :

 

76x6.png

 

Link to comment
Share on other sites

  • 0

Dovol abych se zasmál. Popravdě řečeno, poměrně si mě urazil, jelikož se tu snažím a ty o mě prakticky vůbec nic nevíš, jsem poměrně velký začátečník v pawnu, tak klídek. Navíc vše si ze začátku ihned googlím než se zeptám, ale když prostě nic nenajdu, zeptám se... Už kolikrát jsem něco vygooglil a pomohlo mi to, ale taky kolikrát jsem nic nenašel a proto se ptám zde na fóru, kde mám od pokročilých pawnerů zpětnou vazbu a lépe to pochopím.

Link to comment
Share on other sites

  • 0

Dovol abych se zasmál. Popravdě řečeno, poměrně si mě urazil, jelikož se tu snažím a ty o mě prakticky vůbec nic nevíš, jsem poměrně velký začátečník v pawnu, tak klídek. Navíc vše si ze začátku ihned googlím než se zeptám, ale když prostě nic nenajdu, zeptám se... Už kolikrát jsem něco vygooglil a pomohlo mi to, ale taky kolikrát jsem nic nenašel a proto se ptám zde na fóru, kde mám od pokročilých pawnerů zpětnou vazbu a lépe to pochopím.

~> Ja jsem naprosto v pohodě. Kdybych měl být ještě více v klídku, tak bych musel prožívat euforii, kterou bych dosáhl leda tak díky drogám.

~> Je mi jedno, ať si nobka, začátečník, profík, mistr, bůh nebo třeba i Chuck Norris. Já pracuju s tím, co vidím a co si zjistím. A ne, negooglíš. Protože, stačí ani ne 3 sekundy a věděl bys odpověď:

 

 

526C.png

 

 

~> Že jsi to i přes těch desítky vyřešených helpů nepochopil? Nevadí, furt tu je google překladač:

 

 

di21.png

 

 

~> TOMUHLE se říká snaha. A ne, že zapneš google na 10 sekund(možná ani to vůbec), a když si tam nenajdeš alespoň podobný kód tomu tvému, i když velká většina ukázka řešení je zcela zřejmá, tak pak hned mi tady řveš jak se hrozně snažíš...

~> A můžeš mi prosimtě říct, kde ti přesně pomohl, když máš i s tím nejzákladnějším problém? Jak nainstalovat Pawno a spustit nový list?

 

~> Ty nemáš problém s pár věcmi, nebo s tímhle a tamhletím. Ty máš problém s celou teorií. Jakmile bys jí pochopil, tak těch 80% helpů, co jsi založil by ani nevznikly. Takže, místo toho, abys zakládal další topic na další zbytečnou drobnost se raději zaměř si něco pročíst. Jakmile budeš mít problém v teorii a bude vidět, že jsi z toho návodu čerpal(nekopíroval), a založíš na to help, že to třeba nechápeš, nebo, že ti to nejde, tak pak tady není problém ti pomoct(tomuhle by se mohla taky říkat snaha btw).

Link to comment
Share on other sites

  • 0

Mimochodem tohle jsem si googlil, maximálně jsem si to teda nedával do překladače... Ale googlil jsem si ten error, našel jsem: Kick("playerid"); // We are passing a STRING, we should be passing an INTEGER

Ale jelikož jsem prostě nevěděl co s tím, i když jsem si to vygooglil, zeptal jsem se. Navíc naprosto vše si googlím než se zeptám! Pouze to prostě nechápu, tak mi tady přestaň psát blbosti když ani nevíš co se na mém monitoru odehrává a nemáš nic ověřené. Jsem pouze nechápavý člověk.. :d

 

EDIT: K tomu tam bylo ještě napsáno: Fixed: Kick(playerid); a jako promiň, ale z toho jsem vážně nerozeznal, že tam mám dát strval

Edited by snake3321
Link to comment
Share on other sites

  • 0

~> Pokud radu, že by ses měl už začít pořádně učit teorii bereš jako blbost... tak to se nedivím, že nic nechápeš.

 

Kick("playerid"); // We are passing a STRING, we should be passing an INTEGER

 

~> Ach... No, i když tady důvod bije přímo do očí, tak stejně ti to rád vysvětlím. Když se podíváš na wiki této funkce (http://wiki.sa-mp.com/wiki/Kick), a všimneš si parametrů:

(playerid)

 

playerid The ID of the player to kick.

 

tak jediné, co tam vidíš, je playerid, bez nějakých []. Parametry, ktere jsou string uvidíš s těmi závorkami. Důvod, proč je to špatně je, protože string je řetězec znaků. Zjednoduším ti to: jelikož string může být/obsahovat číslo, písmenko, znak... tak se to všechno dává do uvozovek " ", protože některé texty ti nemůžou vracet něco logického (boolen, číslo, float...ledatak délku, nebo po komprimaci). Taky proto ti ta funkce nemůže vzít "playerid", protože nemůže z toho zjistit to číslo. Takže, ne text(string), ale číslo(interger) -> Kick(playerid);

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...