Skripta koju koristim: Red Country
Detaljan opis problema: Ovako, htio bih napraviti komandu sa timerom, i da ta komanda radi samo u jednom krugu. Htio bi napravit da kada kucam komandu /napravicrack da mi doda neku kolicinu droge npr. 50 grama. Zanima me dali je to moguce, i ako da dali bi mi mogao netko detaljno objasniti kako posto sam novi u tome? Molim vas.
Dio skripte: /
Neke slike/video za lakse dobivanje pomoci(neobavezno): /
Za proveru da li je igrac blizu te pozicije koristi
http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint
I onda samo dole dodas da doda igracu drogu sa ovim:
I tu dodas PlayerInfo[playerid][pDrugs] = pa upisi kolicinu tu;
Eto ako i dalje neznas onda reci pa cu smuckati nesto ;)
new CRACK[ MAX_PLAYERS ]; // ili enumator -.-''
YCMD:napravicrack(playerid, params[], help)
{
#pragma unused help
#pragma unused params
SetTimerEx("_CRACK_", 10000, false, "i", playerid); // 10 sec
SendClientMessage(playerid, -1, "Uzimanje droge...");
/*
codecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecode
*/
return 1;
}
forward _CRACK_(playerid); public _CRACK_()
{
CRACK[ playerid ]=50;
SendClientMessage(playerid, -1, "Kolicina: 50");
return 1;
}
YCMD:usecrack(playerid, params[], help)
{
#pragma unused help
#pragma unused params
if(CRACK[ playerid ] > 1)
{
CRACK[ playerid ] --;
/*
codecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecodecode
*/
}else SendClientMessage(playerid,-1,"Nemas droge");
return 1;
}
dalje...
uradi sam :/
Hvala puno Gagi_Corleone, napravio sam da mi dodava drogu.. Ako mi bude jos nesto trebala pomoc oko toga pisat cu ovdje, molimvas nemojte mi lockat temu.
Citat: Kudrow poslato Avgust 11, 2011, 17:48:34 POSLE PODNE
Citat: Gagi_Corleone poslato Avgust 11, 2011, 17:33:18 POSLE PODNE
Za proveru da li je igrac blizu te pozicije koristi
http://wiki.sa-mp.com/wiki/IsPlayerInRangeOfPoint
I onda samo dole dodas da doda igracu drogu sa ovim:
I tu dodas PlayerInfo[playerid][pDrugs] = pa upisi kolicinu tu;
Eto ako i dalje neznas onda reci pa cu smuckati nesto ;)
Probao sam ovo i radi, samo sto kada ponovno kucam tu komandu ostaje opet 50 grama, tj. ne dodaje sljedecih 50 grama.. Postoji li nesto da mi 'doda' a ne 'postavi' drogu?
Samo postavis PlayerInfo[playerid][pDrugs] += pa upisi kolicinu tu;
;)
Pozdrav evo mene opet.
Imam sljedeca pitanja:
1. Kako/sta da ubacim da kada kucam /napravicrack a nisam na odredjenom poziciji da mi napise "Niste u Tvornici Cracka" i da oznaci sa checkpointom na mapi?
2. Kako da napravim da samo jedna organizacija moze to koristit, a ako nisam iz te org da napise "Niste u toj i toj org.."?
1. if(!IsPlayerInRangeOfPoint(playerid, 3.0, x,y,z)) return SetPlayerCheckpoint(playerid,x,y,z,3); SendClientMessage(playerid,CRVENA,"{FFFFFF}Greska:{E01E1B}Niste kod tezge sa hranom!");
Samo za prve kordinate x,y,z stavi gde moze da kuca, posle return za x,y,z stavi kordinate gde da mu oznaci CP
2.if(PlayerInfo[playerid][pLeader] != ID org || PlayerInfo[playerid][pMember] != ID org)) return SendClientMessage(playerid,CRVENA,"{FFFFFF}Greska:{E01E1B}Morate biti clan te organizacije!");[/b]
Samo postavi ID org.
Nesto jednostavno eto ;) Radice valjda
Gagi moze pomoc opet, ili netko?
Kako da ubacim timer ovdje? Znaci da se ova komanda (/napravicrack) moze koristit svakih 2min, a ako kucas prije nego sto prodje to vrjeme da ti napise "Morate sacekati 2 minute."? Ako biste mi mogli dodat timer u ovo dolje bio bi vam jako zahvalan..
if(!strcmp("/napravicrack",cmdtext))
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, 2422.23315, 145.628250, 30.79349))
{
SendClientMessage(playerid,0x9ACD32AA,"Uspjesno ste napravili Crack!");
PlayerInfo[playerid][pDrugs] += 50;
}
return 1;
}
Evo ja sam uradio u ZCMD
Zamrzne ga na dve minute i onda ga posle odmrzne
CMD:napravicrack(playerid,params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 2422.23315, 145.628250, 30.79349)) return SendClientMessage(playerid,COLOR_RED"Niste na mestu za pravljenje droge");
SendClientMessage(playerid,0x9ACD32AA,"Uspjesno ste napravili Crack!");
SetTimerEx("PraviCrack", 120000, false, "i", playerid);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid,COLOR_BLUE"Morate sacekati dve minute da napraviti drogu");
return 1;
}
Gore dodas forward PraviCrack();
I onda na kraj moda dodas
public PraviCrack()
{
PlayerInfo[playerid][pDrugs] += 50;
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid,COLOR_BLUE"Napravili ste drogu");
}
Sve sam stavio kako si mi rekao i izbaci mi 5 errora..
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18715) : error 017: undefined symbol "napravicrack"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18717) : error 001: expected token: ",", but found "-string-"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18717) : warning 215: expression has no effect
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18717) : error 001: expected token: ";", but found ")"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18717) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18717) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
5 Errors.
CMD:napravicrack(playerid,params[]); // Ovo je linija 18715
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 2422.23315, 145.628250, 30.79349)) return SendClientMessage(playerid,COLOR_RED"Niste na mestu za pravljenje droge"); // Ovo je linija 18717
SendClientMessage(playerid,0x9ACD32AA,"Uspjesno ste napravili Crack!");
SetTimerEx("PraviCrack", 120000, false, "i", playerid);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid,COLOR_BLUE" Morate sacekati 2 minute da napravite drogu!");
return 1;
}
To dodaj isto na kraj moda i koristi ZCMD
Znaci ako nemas gore kod include dodas
#include <zcmd>
Evo i download ako nemas ZCMD.inc
http://forum.sa-mp.com/showthread.php?t=91354
Citat: Gagi_Corleone poslato Avgust 12, 2011, 21:48:45 POSLE PODNE
To dodaj isto na kraj moda i koristi ZCMD
Znaci ako nemas gore kod include dodas
#include <zcmd>
Evo i download ako nemas ZCMD.inc
http://forum.sa-mp.com/showthread.php?t=91354
Nisam shvatio, sta da stavim na kraj moda??
Skinuo sam i ubacio zcmd, ali svejedno dolaze 4 errora.
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : error 017: undefined symbol "cmd_napravicrack"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Citat: Kudrow poslato Avgust 12, 2011, 21:56:39 POSLE PODNE
Citat: Gagi_Corleone poslato Avgust 12, 2011, 21:48:45 POSLE PODNE
To dodaj isto na kraj moda i koristi ZCMD
Znaci ako nemas gore kod include dodas
#include <zcmd>
Evo i download ako nemas ZCMD.inc
http://forum.sa-mp.com/showthread.php?t=91354
Nisam shvatio, sta da stavim na kraj moda??
Skinuo sam i ubacio zcmd, ali svejedno dolaze 4 errora.
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : error 017: undefined symbol "cmd_napravicrack"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(18716) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Ovo:
CMD:napravicrack(playerid,params[]); // Ovo je linija 18715
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 2422.23315, 145.628250, 30.79349)) return SendClientMessage(playerid,COLOR_RED"Niste na mestu za pravljenje droge"); // Ovo je linija 18717
SendClientMessage(playerid,0x9ACD32AA,"Uspjesno ste napravili Crack!");
SetTimerEx("PraviCrack", 120000, false, "i", playerid);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid,COLOR_BLUE" Morate sacekati 2 minute da napravite drogu!");
return 1;
}
To neide pod public OnPlayerCommandText...
To mozes staviti npr. na kraj moda. i tamo krenes da redjas ZCMD komande. Znaci spusti skroz dole i tamo stavi komandu.
:'(
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63935) : warning 218: old style prototypes used with optional semicolumns
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63936) : error 055: start of function body without function header
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63937) : error 010: invalid function or declaration
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63942) : error 010: invalid function or declaration
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63948) : error 017: undefined symbol "playerid"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63949) : error 017: undefined symbol "playerid"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63950) : error 017: undefined symbol "playerid"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63950) : warning 215: expression has no effect
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63950) : error 001: expected token: ";", but found ")"
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63950) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63950) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
9 Errors.
Ovo mi je trenutno na kraju skripte:
//-------------------- Komande vezane za Tvornicu Cracka u Palomino Creeku ----------------------------//
//-------------------- /napravicrack cmd --------------//
CMD:napravicrack(playerid,params[]);
{
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 2422.23315, 145.628250, 30.79349)) return SendClientMessage(playerid,COLOR_RED"Niste na mestu za pravljenje droge");
SendClientMessage(playerid,0x9ACD32AA,"Uspjesno ste napravili Crack!");
SetTimerEx("PraviCrack", 120000, false, "i", playerid);
TogglePlayerControllable(playerid, 0);
SendClientMessage(playerid,COLOR_BLUE" Morate sacekati 2 minute da napravite drogu!");
return 1;
}
//-------------------- Pravljenje Cracka u Tvornici Cracka! -------------//
public PraviCrack()
{
PlayerInfo[playerid][pDrugs] += 50;
TogglePlayerControllable(playerid, 1);
SendClientMessage(playerid,COLOR_LIGHTBLUE"Napravili ste drogu!");
}
Izvini sto te gnjavim, ali stvarno nemam pojma sa skriptanjem, a ovo nista ne razumijem..
Funkcija public PraviCrack() ti ne valja.
Navednoj funkciji moraÅ¡ proslediti kao argument/parametar (kako god samo hoćeÅ¡) id igraÄa na kome se vrÅ¡i akcija, odnosno niz akcija.
Svugdi gde ti piše: PraviCrack()
Stavi: PraviCrack(playerid).
NAPOMENA: SetTimerEx("PraviCrack", 120000, false, "i", playerid);
ovo ostavi ovako.
EDIT: Ovo:
SendClientMessage(playerid,COLOR_LIGHTBLUE"Napravili ste drogu!");
Ti takoÄ'e ne velja, fali ti zarez, stavi ovako:
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Napravili ste drogu!");
Citat: mikec poslato Avgust 12, 2011, 22:19:05 POSLE PODNE
Funkcija public PraviCrack() ti ne valja.
Navednoj funkciji moraÅ¡ proslediti kao argument/parametar (kako god samo hoćeÅ¡) id igraÄa na kome se vrÅ¡i akcija, odnosno niz akcija.
Svugdi gde ti piše: PraviCrack()
Stavi: PraviCrack(playerid).
NAPOMENA: SetTimerEx("PraviCrack", 120000, false, "i", playerid);
ovo ostavi ovako.
EDIT: Ovo:
SendClientMessage(playerid,COLOR_LIGHTBLUE"Napravili ste drogu!");
Ti takoÄ'e ne velja, fali ti zarez, stavi ovako:
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Napravili ste drogu!");
Hvala. Ali jos uvijek su 3 errora..
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63933) : warning 218: old style prototypes used with optional semicolumns
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63934) : error 055: start of function body without function header
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63935) : error 010: invalid function or declaration
C:\Documents and Settings\Petar\Desktop\RedLine\gamemodes\rcrp.PWN(63940) : error 010: invalid function or declaration
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
3 Errors.
MožeÅ¡ li mi taÄno naznaÄiti Å¡ta piÅ¡e u tim linijama? Hvala.
Naravno.
Linija 63933
CMD:napravicrack(playerid,params[]);
Linija 63934
{
Linija 63935
if(!IsPlayerInRangeOfPoint(playerid, 3.0, 2422.23315, 145.628250, 30.79349)) return SendClientMessage(playerid,COLOR_RED"Niste na mestu za pravljenje droge");
Linija 63940
return 1;
SendClientMessage(playerid,COLOR_RED"Niste na mestu za pravljenje droge");
Zašto nisi izmenio? Gore sam ti rekao da ti fali zarez. Stavi ovako:
SendClientMessage(playerid,COLOR_RED, "Niste na mestu za pravljenje droge");
Dalje
CMD:napravicrack(playerid,params[]);
Å ta će ti ovde taÄka zarez? IzbriÅ¡i je.
Ako još uvek ima errora, javi koji su errori, i šta piše u tim linijama.
Citat: Gagi_Corleone poslato Avgust 12, 2011, 18:48:51 POSLE PODNE
1. if(!IsPlayerInRangeOfPoint(playerid, 3.0, x,y,z)) return SetPlayerCheckpoint(playerid,x,y,z,3); SendClientMessage(playerid,CRVENA,"{FFFFFF}Greska:{E01E1B}Niste kod tezge sa hranom!");
Neće raditi, returnao si funkciju i zatvorio ju sa " ; ", izmeÄ'u funkcija kada ih returnaÅ¡ treba biti zarez...
Citat: mikec poslato Avgust 12, 2011, 22:19:05 POSLE PODNE
Funkcija public PraviCrack() ti ne valja.
Navednoj funkciji moraÅ¡ proslediti kao argument/parametar (kako god samo hoćeÅ¡) id igraÄa na kome se vrÅ¡i akcija, odnosno niz akcija.
Svugdi gde ti piše: PraviCrack()
Stavi: PraviCrack(playerid).
NAPOMENA: SetTimerEx("PraviCrack", 120000, false, "i", playerid);
ovo ostavi ovako.
EDIT: Ovo:
SendClientMessage(playerid,COLOR_LIGHTBLUE"Napravili ste drogu!");
Ti takoÄ'e ne velja, fali ti zarez, stavi ovako:
SendClientMessage(playerid,COLOR_LIGHTBLUE,"Napravili ste drogu!");
Hvala na ispravci ja nisam ni obracao paznju posto sam pisao ovde u poruci. Pa zato i ima gresaka.
@Blood
Hvala na ispravci ;)