-
Posts
754 -
Joined
-
Last visited
-
Days Won
43
Content Type
Profiles
Forums
News
Documentation
Everything posted by InceMan
-
Cum sa creezi un timer. M-am gandit sa creez un tutorial pentru incepatori, care, cred eu ii va ajuta foarte multe pe viitor.Pentru inceput sa va explic din ce este compus SetTimer:Code: SetTimer("message", 1000, false);* message = numele publicului care il declanseaza o data cu terminarea timpului.* 1000 = reprezinta cat timp trebuie sa se 'scurga' pentru a actiona publicul "message".ATENTIE! Timpul se masoara in milisecunde NU secunde! 1 secunda = 1000 milisecunde.* false = in acest caz, false inseamna ca timerul nu se repeta, daca era true, publicul "message" se declansa de fiecare data cand timerul termina numaratoarea.Pana aici nu cred ca exista nelamuriri. Sa trecem mai departe cu tipurile de timere!1. Timerul care se creeaza odata cu pornirea serverului fara a fi declansat de o comanda de catre player. Sa va explic cum il creăm.Pentru inceput , il definim pentru a-l putea distruge.Code: new NumeTimer;ATENTIE! Sa nu adaugati [MAX_PLAYERS] pentru ca timerul nu se creeaza asupra unui player.Pasul urmator, il adaugam in OnGameModeInit:Code: NumeTimer = SetTimer("message", 4000, false);Iar daca vrem sa se repete:Code: NumeTimer = SetTimer("message", 4000, true);ATENTIE! La fieacre 4 secunde se actioneaza publicul "message"!Urmatorul pas este de a creea publicul "message":Code: forward message(); public message() { //Actiune dvs. , in acest caz pun doar un simplu SendClientMessage(); foreach(Player, i) SendClientMessage(i,-1,"Timer Actionat!"); } return 1; }Sa va explic ce am facut aici, dupa cum vedeti am facut un loop, care sa trimita la toti playerii textul "Timer Actionat!", daca vreti si voi sa faceti acelasi lucru, va recomand sa descarcati include'ul foreach.Si ultima parte, distrugerea acestuia:Code: KillTimer(NumeTimer);Aceasta functie, va fi pusa la OnGameModeExit! 2. Timerul care nu se repeta si este actionat fie de OnPlayerConnect , fie de o comanda.Pasul 1. Il definim pentru a-l putea distruge la un moment dat!Code: new NumeTimer2[MAX_PLAYERS];Pasul 2. Il cream, aici va voi arata 2 variante.Daca vrem sa se declanseze cand playerul se connecteaza , adaugam la OnPlayerConnect:Code: NumeTimer2[playerid] = SetTimerEx("ActiuneTimer", 5000, false, "i", playerid);Aici este cazul cand nu se repeta, deoarece are 'false', publicul "ActiuneTimer", in cazul nostru se actioneaza dupa 5 secunde de la connectarea playerului.Iar daca vrem sa il facem sa se actioneze prin comanda, pur si simplu, adaugam in interiorii comenzii:Code: NumeTimer2[playerid] = SetTimerEx("ActiuneTimer", 5000, false, "i", playerid);Pasul 3. Crearea publicului "ActiuneTimer":Code: forward ActiuneTimer(playerid); public ActiuneTimer(playerid) { SendClientMessage(playerid,-1,"Tocmai s-a declasat timerul!"); return 1; }Pasul 4. Distrugerea acestuia, chiar daca timerul nu se repeta, deoarece playerul poate iesi in timp ce timerul ruleaza(optional).Adaugam la OnPlayerDisconnect:Code: KillTimer(NumeTimer2[playerid]);3. Timerul ce se repeta si este actionat fie de OnPlayerConnect, fie de o comanda.Pasul 1. Este acelasi lucru ca cel de la timerul care nu se repeta.Pasul 2. Il cream:Daca vrem sa se declanseze cand playerul se connecteaza si sa se repete pana cand iese, adaugam la OnPlayerConnect:Code: NumeTimer2[playerid] = SetTimerEx("ActiuneTimer", 5000, true, "i", playerid);Aici este cazul cand se repeta, deoarece are 'true', publicul "ActiuneTimer", in cazul nostru se actioneaza dupa fiecare 5 secunde de la connectarea playerului.Iar daca vrem sa il facem sa se actioneze prin comanda, pur si simplu, adaugam in interiorul comenzii:Code: NumeTimer2[playerid] = SetTimerEx("ActiuneTimer", 5000, true, "i", playerid);Si din acel moment timerul se repeta la fiecare 5 secunde, pana cand este distrus.Pasul 3. Crearea publicului "ActiuneTimer":Code: forward ActiuneTimer(playerid); public ActiuneTimer(playerid) { SendClientMessage(playerid,-1,"Timerul este setat sa se repete!"); return 1; }Pasul 4. Distrugerea acestuia: 1. Adaugam la OnPlayerDisconnect in caz ca timerul inca ruleaza:Code: KillTimer(NumeTimer2[playerid]);2. Putem distruge timerul in ce etapa doriti, cu conditia sa nu fie pus undeva unde sa il distruga de enșpe mii de ori , cand el a fost distrus.Ex: Daca timerul este setat sa actioneze cat playerul este in viata, adaugam SetTimerEx, la OnPlayerSpawn si KillTimer la OnPlayerDeath.------------------------------------------------------------------------------------------------------ATENTIE!Ce am pus eu NumeTimer si NumeTimer2 sunt doar exemple, voi le puteti numi si altfel, cu conditia sa respectati ce am scris mai sus.NU trebuie sa existe 2 timere cu aceasi definitie, adica 2 timere de genu: NumeTimer = SetTimerEx(...false);NumeTimer = SetTimerEx(...true);Repet! Timerele masoara timpul in MILISECUNDE nu secunde! Cum faceti din secunde/minute/ore in milisecunde? Simplu, http://www.calculateme.com/Time -> seconds to miliseconds.Sper ca am fost destul de explicit, succes!
-
bun tutorial felicitari!
-
Salut, incearca asa CMD:vowner(playerid, params[]) { new owner[MAX_PLAYER_NAME+1], query[250]; if(sscanf(params, "u", owner)) return SendClientMessage(playerid, -1, "/vowner <PartOfName/PlayerID>"); if(IsPlayerInVehicle(playerid, GetPlayerVehicleID(playerid))) { mysql_format(SQL, query, sizeof(query), "UPDATE cars SET Owner = '%s' WHERE id = %d", owner, GetPlayerVehicleID(playerid)); mysql_tquery(SQL, query, "", ""); } return 1; }
-
Salut ! Astazi m-am lasat definitiv din a mai lucra la un gamemode si cu aceasta ocazia am sa imi dezvalui cea mai mare lucrare a mea de cand scriptez. Un gamemode complex si foarte bine aranjat si gandit. Desigur, am mai luat o idee de la unii colegi, m-au si ajutat intre timp si invers. Serverul este unul RPG (modificat,rescris,adaugat de mine toate sistemele,modificarile) si deasemenea are un aspect foarte frumos si in plus este in ENGLEZA (mai la moda). Factiuni Civilian Police Department FBI Agency National Guard Medic / Fireman Department La Cosa Nostra Yakuza Mayor Hitman Agency News Reporter Taxi Company FMA (For more adrenaline) Bloods Gang Crips Gang Surenos Gang Nortenos Gang Modificari / Adaugari (sunt multe si am sa vi le insir pe toate) -Primul si cel mai important lucru este ca procesorul de comenzi este alcatuit din ZCMD & SSCANF (amandoua combinate). Este cel mai rapid command procesor la ora actuala. -Pentru factiunea FMA exista Curse Comenzi disponibile: /loadrace /joinrace /quitrace /kickrace /racers Cursele le poti creea tu prin comanda /build. Un sistem realizat si terminat de mine, este unul impresionant, merita vazut ! -Pentru Mafii / Gang-uri sunt create niste RIVALWAR-uri adica Yakuza cu La Cosa Nostra se vor bate pe niste teritorii, comanda pt a incepe un rivalwar este /rivalwar iar ca sa functioneze comanda trebuie sa fie cel putin 5 membrii online din fiecare factiune si in plus este un timp pus pt a nu face spam pe /rivalwar (sistem facut si realizat de mine in y_ini) -Pentru factiunea COP este facuta o comanda /siren prin care iti poti pune o sirena pe masina (era si firesc de la vine numele comenzii) -Pentru Medic / Fireman Department este facut si terminat un sistem de incendiere. La un interval de 30 de minute un incendiu va fi izbucnit intr-un loc din San Fierro. Un Pompier va fi nevoit sa se duca la locul unde incendiul este in desfasurare si va trebui sa il stinga. Stingerea incendiului se poate efectua folosind Firetrucker-ul (apasand pe CLICK in timp ce esti in masina si tintind spre incendiu). Deasemenea poti stinge focul cu Fire Extinguisher. (sistem conceput si realizat de mine, am testat tot si nu pare a fi niciun BUG) -Inca o noutate pt tot serverul este sistemul de licentiere care expira. La inceput cand te inregistrezi serverul iti va da automat o licente de condus valabil 7 zile. Dupa 7 zile vei fi nevoit sa iti cumperi din nou licenta. Apoi licenta va fi valabila 30 de zile. Suma pe care o dai pe licenta are la baza o formula, level-ul pe care il deti ori 5k (simplu). -Power User pe timp. Poti dona folosind comanda /charity o suma in valoare de 1 milion si in schimbul acesteia vei primii Power User valabil 30 de zile. Dupa ce expira vei fi nevoit sa iti cumperi alta.-Mysql adaugat doar la logs, lista cu admini online, ultima lor logare pe server, asa si la helper.Gamemode-ul este terminat si lucrat de mine totodata in jurul a 5 luni cu pauze de 1-2 saptamani. Sunt foarte multe modificari eu am incercat sa insir doar cele mai importante realizari ale mele. Ve-ti fi uimiti de ce o sa vedeti in GameMode. LINK DOWNLOAD: Click here or here Credits: -Yoobogdan, pentru ajutorul pe care mi l-a oferit la anumite probleme. -Xanto, pentru ideile lui minunate, de la el m-am inspirat. Puteti face ce vreti cu acest server, eu m-am lasat definitiv pentru ca mi-am dat seama intr-un final ca imi pierd timpul degeaba. Poate intr-o zi cu soare o sa va dati si voi seama de acest lucru.
-
o poti adauga in comanda
-
incearca sa rescrii comanda din cate vad ai micile gresel cred ca ar merge o separatie de foreach(Player, i) { if(PlayerInfo[i][pMember] == TurfInfo[turf][zOwned] || PlayerInfo[i][pMember] == WarInfo[turf][wAttacker]) { SetPlayerVirtualWorld(i, 1024); SendClientMessage(i, COLOR_YELLOW, "War-ul a inceput, va avea loc in acelasi virtual world cu toti jucatorii."); } } if(WarInfo[turf][wAttacker] == 4 || TurfInfo[turf][zOwned] == 4) { for(new veh; veh < sizeof(Aztecasc); veh++) { SetVehicleVirtualWorld(Aztecasc[veh], 1024); } } //etc.
-
Salut, incearca sa definesti asa for(new i = 1; i <= sizeof(TurfInfo); i++) { if(IsPlayerInTurf(playerid, i) == 1) { turf = i; break; } }
-
salut scuze ca intervin dar toata lumea trage la oala lui, toti suntem la fel nu trebuie sa ne judecam.
-
din pacate nu mai am systemul, am instalat windows-ul si am uitat sa il salvez.
-
imi poti arata server_log?
-
ce oameni eai stricat toata afacerea
-
eao de nevasta
-
OK gata mam prins cum trebuie refacut
-
sa fac asa ca nu inteleg ce zici Functie SeteazaHP(playerid, Float:Ammount) { //if(Ammount < 100) SetPlayerHealth(playerid, Ammount); //else SetPlayerHealth(playerid, 99); SetPlayerHealth(playerid, Ammount); Ammount[playerid] = Ammount; return 1; } sau ceva de genul AOD[playerid] = true; si AOD[playerid] = false;
-
pai daca setez hp-ul mai mare de 99999 imi apare antiheat si eu vreau ca la aod si fly sa am viata infinita si nu imi merge
-
salut, am o problema la Health cand adaug de exemplu la comanda fly si viata sa fie infinit nu merge la SeteazaHP(playerid,99999999999999999); nu se intampla nimic in rest am pus SetPlayerHealth(playerid, 99999999999999999); si imi arata viata infinita dar cand folosesc comanda imi da respawn Functie SeteazaHP(playerid, Float:Ammount) { if(Ammount < 100) SetPlayerHealth(playerid, Ammount); else SetPlayerHealth(playerid, 99); return 1; }
-
MULTUMESC AM REZOLVAT PROBLEMA [07:46:21] [PAWN]: MAX_PLAYERS 1000
-
[21:56:32] [PAWN]: MAX_PLAYERS 500 [21:56:32] Number of vehicle models: 101 [21:56:32] [debug] Run time error 4: "Array index out of bounds" [21:56:32] [debug] Attempted to read/write array element at index 999 in array of size 500 [21:56:32] [debug] AMX backtrace: [21:56:32] [debug] #0 00051928 in public OnObjectMoved (13) from FiveGame_v1.1.4.amx [21:56:32] [debug] Run time error 4: "Array index out of bounds" [21:56:32] [debug] Attempted to read/write array element at index 999 in array of size 500
-
am facut tot degeaba
-
doar folderul YSI am actualizat am facut si un printf [07:23:08] [PAWN]: MAX_PLAYERS 500
-
la fel este
-
MAX_PLAYERS
-
Public BallDown(playerid, Float:oldz) { new Float:x, Float:y, Float:z; GetObjectPos(Ball, x, y, z); new Float:a; new Float:x2, Float:y2; GetPlayerPos(playerid, x2, y2, a); GetPlayerFacingAngle(playerid, a); x2 += (16 * floatsin(-a, degrees)); y2 += (16 * floatcos(-a, degrees)); MoveObject(Ball, x2, y2, oldz-0.8, 10.0+random(3)); Baller = 999; ShootingBall = 0; BallBounce = 1; return 1; }
-
if(newkeys & KEY_FIRE && !IsPlayerInAnyVehicle(playerid)) { if(!HavingBall[playerid]) { new Float:x, Float:y, Float:z; GetObjectPos(Ball, x, y, z); if(IsPlayerInRangeOfPoint(playerid, 1.5, x, y, z)) { HavingBall[playerid] = 1; ApplyAnimation(playerid,"BSKTBALL","BBALL_pickup",4.0,0,0,0,0,0); if(Baller != 999) { HavingBall[Baller] = 0; ClearAnimations(Baller); ApplyAnimation(Baller, "CARRY", "crry_prtial", 1.0, 0, 0, 0, 0, 0); ApplyAnimation(playerid,"BSKTBALL","BBALL_walk",4.1,1,1,1,1,1); } Baller = playerid; BallStatus = 1; new Float:x2, Float:y2; GetXYInFrontOfPlayerBasket(playerid, x2, y2,0.8); GetPlayerPos(playerid, x, y, z); StopObject(Ball); MoveObject(Ball, x2, y2, z, 2.5); AnimBasket[playerid] = 0; BallBounce = 0; } } else foreach(new i: Player) { if(IsPlayerConnected(i)) { if(IsPlayerFacingPlayer(playerid, i, 15)) { new Float:x, Float:y, Float:z; GetPlayerPos(i, x, y, z); if(IsPlayerInRangeOfPoint(playerid, 20.0, x, y, z)) { Baller = i; HavingBall[playerid] = 0; ClearAnimations(playerid); ApplyAnimation(playerid,"BSKTBALL","BBALL_def_loop",4.0,1,0,0,0,0); SetTimerEx("ClearAnim", 700, 0, "d", playerid); MoveObject(Ball, x, y, z, 13+random(4)); AnimBasket[i] = 0; ShootingBall = 6; ApplyAnimation(i,"BSKTBALL","BBALL_def_loop",4.0,1,0,0,0,0); return 1; } } } }
-
te referi la acel playerid?
