-
Příspěvků
806 -
Registrován
-
Aktivní
-
Vítězných dnů
4
Content Type
Profiles
Forums
Calendar
Gallery
SA-MP
Příspěvky posted by ĐaVe
-
-
ne.. nejsou omezene printnul jsem si jich přes 10 tisic a stale vrací hodnotu..
pres 10 tisic?
Player Variables 800
-
je vám všem jasné že PVARY jsou taky limitovane? tudiž by vám to pak nefungovalo...
proto delam radeji bez nich
-
No ale u mňa to tak nejde, pride jeden a zapne raka
pak leda si muzes v mym scriptu zmenit
if(pocet == 4)
na
if(pocet == 1)
a pred kick asi 3s pred kickem (pres timer) dat zpravu "pokud je kick neopravneny, kontaktujte mne na skype at vam povolim ip adresu" ale na to se asi kazdej vykasle, misto toho aby te kontaktoval rekne si "pujdu na jinej server"
to by bylo lepsi udelat jak pise
HighPrint -
dálší, co by bylo na tahu by bylo asi, že
new test[16];
by mělo být nad
for(new i=0; i<MAX_PLAYERS;i++)
aby se zbytečně netvořilo 100x dal jsem to pod to, abych si byl jistej, že to pojede, vzpoměl jsem si na pár komplikací v TT, ale nejsem si jistý, zda to bylo přímo v tomhle :-)
Wtf tak čo je to zle ?
ne, neni neboj, je to dobre zkratka komplikovanejc, chtel jsem se trosku lisit od jejich scriptu neco originalniho do nej
-
DaVe mohl bych ti sem toho napsat víc, ale nebudu až tolik rejpat.
Toto opravdu myslíš vážně?
stock SendPrint(text[],cislo,text2[]) { new s[100]; if(cislo == -1) { format(s,100,"%s%s",text,text2); } else{ format(s,100,"%s%d%s",text,cislo,text2); } print(s); }
To co tam děláš dělá printf(..) a dělá to lépe..
ja věděl že to někdo zmíní
-
muzes od vrchu
nebo od spodu od prostred jak chces
-
tak já se taky pridám
#include <a_samp> public OnPlayerConnect(playerid) { new ip[16],pocet; GetPlayerIp(playerid, ip, sizeof(ip)); SendPrint("Připojen nový hráč z ip: ",-1,ip); for(new i=0; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i)) { new test[16]; GetPlayerIp(i, test, sizeof(test)); if(!strcmp(ip,test,true)) { pocet++; SendPrint("Nalezeno shod této ip: ",pocet,"."); if(pocet == 4) { SendPrint("Kickuji hráče id: ",playerid,"."); Kick(playerid); } } } } return 1; } stock SendPrint(text[],cislo,text2[]) { new s[100]; if(cislo == -1) { format(s,100,"%s%s",text,text2); } else{ format(s,100,"%s%d%s",text,cislo,text2); } print(s); }
- 1
-
Boti vyvolané RakSAMPem nejsou NPC, nýbrž "hráči", kteří jsou schopni posílat i přijímat pakety. Takže ta tvoje zkušenost je pěkně lživá. Navíc když kickneš někoho se stejnou IP, tak tomu druhýmu se nic nestane – jen ban.
@Mikoo, to se nedá tak říci, protože bot může být jeden nebo 50. To samé může nastat situace s hráči (bratr s bratrem hrajou ve stejnou chvíli).
jasnee vsechny moje zkusenousti jsou velka lez i kdybych ti to predvedl na zivo, myslis si ze teorie tvoje je vetsi nez praxe.... vis co ja vam na to forko seru uplne, nejlepsi lidi co tu byli uz tu stejne nejsou, QWERa jste zabanovali i kdyz tu byl jeden z nejlepsich a nejaktivnejsich a vis co... me je to jedno
-
jenže ten bot má stejnou IP jako hráč... ten hack ti akorat odlimituje počet připojení na kompu...
ano, bot ma stejnou ip, kdyz pripoji hrac bota kickne ho a tomu frajerovi co ho pripoji spadne hra, protoze jeho ip byla kickla na botovi
-
Přesně jak píše Steam Wallet, asi jedině limitovat počet připojení pod jednou IPinou. Každopádně to co napsal Dave je totální bullshit a tím se rozhodně neřiď.
jasne jako vsechno i jako me zkusenosti sice s RAK zkusenosti nemam, ale kamos v TT kdyz jsem tam tuto podminku mel dycky pripojoval 50 botu e srandy a tato podminka mu je vzdy kickla dokud jsem ji nevymazal
a tema botama nemyslim npc ale pres program boty ktere delaly presne ty pohyby a akce co delal on se svym hracem
-
public OnPlayerConnect(playerid)
{
if(IsPlayerNPC(playerid)) return Kick(playerid);
return 1;
}- 1
-
Eh...? Už jsem nechtěl do toho rejpat ale
"a nemusis vse definovat jak vocas, naopak to nadefinujes v jednom radku... nemusis se tim vice zdrzovat a zabyvat, vede to i k rychlejsimu pawneni" - TOHLE by nikdy PROGRAMÁTOR neřekl, nemusíš se ZDRŽOVAT? RYCHLEJI?... promiň,... kdyby to bylo všechno sjednocené, tak OnPConnect a OnPDisconnect je v jednom... nebo počkej, proč to rovnou všechno nenacpat do OnGameModeInit? To je taky sjednocení... přece se nemusíš ničím zdržovat a vede to k rychlejšímu pawnění. A taky méně řádků (a tím pokračujeme na druhý bod níže)
A co jako má znamena tohle? "mene radku budes mit v modu" - Od kdy je lepší méně řádků? Být to na mě, tak ten tvůj celej systém dokážů napsat o 3x méně řádků a s lepší funkčností, pokud se hraje na tohle - na řádky. Už jenom DestroyMenu jsi mohl dát na lepší místo a tím by ses zbavil 4 zbytečných řádků...
ale me je to uplne jedno chapes? nepochopil jsi vyznam toho prispevku... jinak ja vim ze to jde pod sebe, muj vkus je jednoduchost v jednom radku, nemusim pak vse vypisovast... jako napr kdyz tvoris menu CreateMenu AddMenuItem... ja nevim jak tebe ale me treba nebavi kvuli tomu abych do menu pridal funkci psat porad znovu AddMenuItem(MojeMenu,... , muj vkus je jednoduchost v jednom radku
a jinak jak jsem psal, jak se mi bude chtit, klidne vam to prekopu, neni to pro me a predem vas zadam, nespamujte kraviny
-
neděláš to pro mě. ale děláš to pro sebe aby se ti zlepšila reputace...
sorry ale reputace i cely tenhle server je mi vis kde delam to pro vas ne pro me, ja uz se samp skoncil
vis kdyby to melo byt na me tak me by se treba s tim delalo lip jak to je, mene radku budes mit v modu, ano sice budes tam neco v danem radku hledat pri upravach, ale budes to mit vse u sebe sjednoceny
a nemusis vse definovat jak vocas, naopak to nadefinujes v jednom radku a nemusis se tim vice zdrzovat a zabyvat, vede to i k rychlejsimu pawneni aspon dle meho nazoru
-
jojo taky to neni spatny napad kdyz se mi bude zase chtit tak ti to prekopu
-
vite co? me je to jedno, jak jsem jiz psal... klidne to cely vymazte a nebo se hodlejte uklidnit, o vsech zninovanych chybach vim dokonce i o tom menu co jsem tu sam nezminil, nejsem blbej, pawno cist jeste umim
bud to cely smazte (je mi to fuk) a nebo budte trpelivi az budu mit chut a cas na to, uz nejsem takovej blazen jako driv ze bych pawnil porad, ne
Protože je DaVe věřící, který nekleje, smazal všechny svoje nadávky.Vážně si myslíš že kvůli tomu jsem to smazal?
Důvod proč: -jsem takový, že občas vybuchnu, něco napíšu a pak si to třeba čtu, jakmile se uklidním alespoň trochu, vidím to jinak a vidím, že jsem třeba vybuchl zbytečně a že jsem ti zbytečně nadával... Ten příspěvek jsem upravoval dříve, než jsi odeslal tvůj.
K includu: opravil jsem doufám vše, snad jsem na nic nezapoměl, linky upraveny, include připraven k použití, kdyby cokoliv ohledně scriptu, pište sem
-
jede specialne pro tebe jsem tu nahral fotky
co ti nejede?
jediny co se divam, nejak nelogicky jsem udelal JobNahranoMinut , jasne pri zadani 0 je vse v pohode ale prakticky nemas sanci treba na id jobu 1 2 3 4 atd ziskat praxi kdyz to reknu lajcky to je asi jediny bug pak ta uniforma tam bych dal podminku ze si ji muzes dat jen pokud jsi tam zamestnan, tyto dva bugy mohu opravit behem chvilinky kdyz budu chtit
vymazu ti pak z tama rovnou ty 2 cykly
-
Stale nedoporucuji pouzivat. Include je neoltimalizovany a nefunkcni.
na zruseni cyklusu jsem o pul druhe rano opravdu nemel cas ani chut a ted taky ne, include funkcni je, ty p*covinky tam opravim az bude cas a chut
-
ráno jsem to testoval, opravil asi 5 chyb v pawnu, ktere měly vliv na funkci includu, include opraven, linky updatovány, include funkční...
Jak pracovat s DJS.inc? Zde je příklad(soubor, na kterém jsem inc testoval, vznikl pro tento test):
/* ============================================================================ DaVe Roleplay Gamemode v1.0 zahájeno: 28.12.2015 v: 1:12 ráno ============================================================================ DJS: ==== Funkce pro pridani penez hraci: GivePlayerJobCashForGet(playerid,cash) Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení: JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení JobID[playerid] Vyplata[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení Nezapomente definovat MAX_JOBS na svůj využitý počet #define MAX_JOBS 50 //přímo v includu Pro kontrolu hráčového jobu využijte: if(JobID[playerid] == Job_ID) AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminut,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon) DHS: ==== 3) vyuzijeme funkci(tuto funkci zadavame do public GameModeInit() ve vasem modu): CreateDaveHouse(mapicon,pickupid,cena,Float:X,Float:Y,Float:Z,interiorid,Float:InteriorX,Float:InteriorY,Float:InteriorZ,HomeVirtualWorld) mapicon = ikona na mape pickupid = id pickupu domu cena = vase nastaveni ceny napr 100000 (piste bez mezer a bez uvozovek) Float:X,Float:Y,Float:Z = pozice pickupu domu interiorid = id interioru domu Float:InteriorX,Float:InteriorY,Float:InteriorZ = pozice interioru, pripadne pozice, kam hrac bude presunut HomeVirtualWorld = vami zvolene id VirtualWorld 4) upravime definici MAX_HOUSES na vami vyuzity pocet domu v includu: #define MAX_HOUSES [vas pocet domu] priklad: #define MAX_HOUSES 45 */ #include <a_samp> #include <DJS> #include <DHS> #define dcmd(%1,%2,%3) if((strcmp((%3)[1],#%1,true,(%2))==0)&&((((%3)[(%2)+1]==0)&&(dcmd_%1(playerid,"")))||(((%3)[(%2)+1]==32)&&(dcmd_%1(playerid,(%3)[(%2)+2]))))) return 1 #define B_ORANZOVA 0xFF7B00AA #define B_CERVENA 0xE10000AA #define B_SVITIVA 0xB5FF4AAA #define B_BILA 0xFFFFFFAA #define B_MODR 0x4169FFAA #define B_ZLUT 0xFFFF00AA #define B_SEDA 0x808080AA main() { print("===================================="); print(" DaVe RolePlay Gamemode"); print("započato: 28.12.2015 v: 1:12 ráno"); print("===================================="); } public OnGameModeInit() { DJS_OnGameModeInit(); DHS_OnGameModeInit(); SetGameModeText("DaVe RP 2015"); for(new i=0; i<299;i++) { AddPlayerClass(i, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); } AddJob("Policista",2029.7307,1349.2823,10.8203,B_ORANZOVA,5,299,241,264,23,32,31,B_ORANZOVA,34); AddJob("Urednik",2040.5896,1344.0265,10.6719,B_MODR,5,299,241,264,0,0,0,B_MODR,34); AddJob("Popelar",2049.5200,1336.1340,10.6719,B_SEDA,5,299,241,264,23,14,0,B_SEDA,34); return 1; } public OnGameModeExit() { DHS_OnGameModeExit(); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnPlayerConnect(playerid) { DJS_OnPlayerConnect(playerid); DHS_OnPlayerConnect(playerid); return 1; } public OnPlayerDisconnect(playerid, reason) { return 1; } public OnPlayerSpawn(playerid) { DHS_OnPlayerSpawn(playerid); return 1; } public OnPlayerDeath(playerid, killerid, reason) { return 1; } public OnVehicleSpawn(vehicleid) { return 1; } public OnVehicleDeath(vehicleid, killerid) { return 1; } public OnPlayerText(playerid, text[]) { return 1; } public OnPlayerCommandText(playerid, cmdtext[]) { return 0; } public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { return 1; } public OnPlayerExitVehicle(playerid, vehicleid) { return 1; } public OnPlayerStateChange(playerid, newstate, oldstate) { return 1; } public OnPlayerEnterCheckpoint(playerid) { return 1; } public OnPlayerLeaveCheckpoint(playerid) { return 1; } public OnPlayerEnterRaceCheckpoint(playerid) { return 1; } public OnPlayerLeaveRaceCheckpoint(playerid) { return 1; } public OnRconCommand(cmd[]) { return 1; } public OnPlayerRequestSpawn(playerid) { return 1; } public OnObjectMoved(objectid) { return 1; } public OnPlayerObjectMoved(playerid, objectid) { return 1; } public OnPlayerPickUpPickup(playerid, pickupid) { DJS_OnPlayerPickupPickup(playerid,pickupid); DHS_OnPlayerPickUpPickup(playerid, pickupid); return 1; } public OnVehicleMod(playerid, vehicleid, componentid) { return 1; } public OnVehiclePaintjob(playerid, vehicleid, paintjobid) { return 1; } public OnVehicleRespray(playerid, vehicleid, color1, color2) { return 1; } public OnPlayerSelectedMenuRow(playerid, row) { DJS_OnPlayerSelectedMenuRow(playerid, row); DHS_OnPlayerSelectedMenuRow(playerid, row); return 1; } public OnPlayerExitedMenu(playerid) { return 1; } public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { return 1; } public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { DHS_OnPlayerKeyStateChange(playerid, newkeys, oldkeys); return 1; } public OnRconLoginAttempt(ip[], password[], success) { return 1; } public OnPlayerUpdate(playerid) { return 1; } public OnPlayerStreamIn(playerid, forplayerid) { return 1; } public OnPlayerStreamOut(playerid, forplayerid) { return 1; } public OnVehicleStreamIn(vehicleid, forplayerid) { return 1; } public OnVehicleStreamOut(vehicleid, forplayerid) { return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { return 1; } public OnPlayerClickPlayer(playerid, clickedplayerid, source) { return 1; }
(v udaném příkladu je zahrnut i DHS)
-
Další pěkná věc, aneb jak zahltit streamer zbytečnýma mapiconama..
(Vytvářej je pokud není includovaný streamer. Pokud je, tak je vytvářej v Initu ^^. Takhle se vytváří pro všechny hráče s každým připojením)
nevim jak presne to funguje ve streameru, ale dle mych zkusenosti jsem to vzdy daval do onplayerconnectu a nebyl s tim problem, jestli streamer funguje jinak nez SetPlayerMapIcon, to jsem nezkoumal
stock DJS_OnPlayerPickupPickup(playerid,pickupid)
{
#pragma unused pickupid
hej no je to zvyk napisu cely public, upravim do sveho, jasny jednodussi pickupid vymazat
~> Ale no ták... už je rok 2k15: (wiki/GetPlayerPoolSize).nesleduju novinky pawna delam ete ve starsim pawnu a ani jsem neaktualizoval ted pawno aby tam tahle funkce sla
- 1
-
Celé je to na nic...
stock GivePlayerJobCashForGet jde napsat mnohem líp bez zbytečného cyklu
if(JobID[playerid] >= 0) Vyplata[playerid][JobId[playerid]] += cash;
Wau a mam to bez cyklu..
-
To stejné AddMin()
JobNahranoMinut[i][JobId[i]]++;
-
A další hlod..
switch(random(3)) { case 0: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin1]); case 1: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin2]); case 2: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin3]); } Protože něco jako SetPlayerSkin(playerid,Job[IsMenu[playerid]][random(3)]); je moc mainstream
-
A toto je zase co
stock DJS_OnPlayerPickupPickup(playerid,pickupid) { #pragma unused pickupid for(new DJS=0; DJS<VytvorenoJobu; DJS++) { if(IsPlayerInRangeOfPoint(playerid,2,Job[DJS][Job_X],Job[DJS][Job_Y],Job[DJS][Job_Z])) <--------------------------- { JobMenu = CreateMenu(Job[DJS][jobname],1, 50.0, 180.0, 400.0, 200.0); AddMenuItem(JobMenu,0,"Uchazet se o pozici"); AddMenuItem(JobMenu,0,"Uniforma"); AddMenuItem(JobMenu,0,"Vyplata"); AddMenuItem(JobMenu,0,"Nic"); ShowMenuForPlayer(JobMenu,playerid); IsMenu[playerid] = DJS; } } }
Proč sakra porovnáváš na jaké je pozici, když stačí porovnat pickupid s uloženýma pickupid k jednotlivým jobům. Plus ti to nebude fungovat, když si stoupne na pickup víc lidí, protože pořád přepisuješ ID toho menu (?)
-
Další pěkná věc, aneb jak zahltit streamer zbytečnýma mapiconama..
for(new i=0;i<MAX_JOBS;i++) { #if defined Streamer_IncludeFileVersion CreateDynamicMapIcon(Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],-1,-1,-1,-1,100); #else SetPlayerMapIcon(playerid,i,Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],i,MAPICON_GLOBAL); #endif }
(Vytvářej je pokud není includovaný streamer. Pokud je, tak je vytvářej v Initu ^^. Takhle se vytváří pro všechny hráče s každým připojením)
-
-
A je strašně pěkně vymyšlené to vkládání volání fcí do OnGameModeInit, OnPlayerConnect atd.. vůbec by nebylo pro obě strany lepší použít hookovaní.
Jako vždy jsi nepřekvapil a je to sra.. Ámen
jojo, sorry, po rocnim nepawneni co jsem pawno otevrel jsem delal moc kopancu co uz, oprvovat se mi to nechce, proste je to jak je a at si s tim dela kazdy co chce
*opravovat
Proč sakra porovnáváš na jaké je pozici, když stačí porovnat pickupid s uloženýma pickupid k jednotlivým jobům.duvod je jednoduchy, protoze od zkusenosti s pawnem vim, ze se if(pickupid==pickup) pri vice pouziti prohazuje a snazim se vyhnout bugum, kdyz uzivatel bude vyuzivat tuto defektni funkci ( myslim if(pickupid == pickup) ), a nestojim o opravne includy jako napr od ATomase, snazil jsem se to delat bez blbych dalsich includu
- 1
-
Přátelé, plánoval jsem se vrátit k pawnu, ale prdím na to chtěl jsem udělat mód RP, začal jsem tímhle scriptem, jelikož jsem se na mód vykašlal a dělat jej nebudu, tak vám odevzdávám svůj include...
takže...
Job system include = include pro tvorbu zamestnani v sampu
Pro vyuziti je treba pridat do publicu:
public OnGameModeInit() { DJS_OnGameModeInit(); } public OnPlayerPickupPickup(playerid,pickupid) { DJS_OnPlayerPickupPickup(playerid,pickupid); } public OnPlayerSelectedMenuRow(playerid, row) { DJS_OnPlayerSelectedMenuRow(playerid, row); } public OnPlayerConnect(playerid) { DJS_OnPlayerConnect(playerid) }
Funkce pro pridani penez hraci:
GivePlayerJobCashForGet(playerid,cash)
Funkce,která odebere hráči job:
DeletePlayerJob(playerid);
Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení:
JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení JobID[playerid] Vyplata[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení
Nezapomente definovat MAX_JOBS na svůj využitý počet:
#define MAX_JOBS 50 //přímo v includu
Pro kontrolu hráčového jobu využijte:
if(PlayerJob(playerid,==,14) )
A samozřejmě nezapomeňte nahoru do módu:
#include <DJS>
Vzhledem k tomu, ze planovany projekt nebyl zhotoven, tak vam tento include
davam, s pozdravem DaVe//EDIT: include otestován, opravené chyby scriptu, znovu nahráno a upravené linky pastebin a download
/* ||=========================================================================|| || || || ** DaVe Job System Include ** || || Tento include je určen pro módy RP, já jsem jej vytvořil pro svůj || || nový plánovaný projekt, který hodlám zkusit udělat, jelikož Sa:Mp || || již není co bývalo, hrozně moc upadlo i já i moji nejlepší přátelé || || ze samp tuto hru již opustili, po prodeji svého auta šetřím na jiné || || tak mám čas po práci vždy něco připawnit, pokud z tohoto projektu, || || který plánuji nic nebude, teno include hodlám zveřejnit pro pawno.cz . || || || ||=========================================================================|| Pro vyuziti je treba pridat do publicu: public OnGameModeInit() { DJS_OnGameModeInit(); } public OnPlayerPickupPickup(playerid,pickupid) { DJS_OnPlayerPickupPickup(playerid,pickupid); } public OnPlayerSelectedMenuRow(playerid, row) { DJS_OnPlayerSelectedMenuRow(playerid, row); } public OnPlayerConnect(playerid) { DJS_OnPlayerConnect(playerid); } Funkce pro pridani penez hraci: GivePlayerJobCashForGet(playerid,cash) Nezapomeňte, až v módu budete dělat ukládání zahrnout i uložení: JobNahranoMinut[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení JobID[playerid] Vyplata[playerid][MAX_JOBS] //je třeba uložit a načíst všechny MAX_JOBS po odpojení hráče a po připojení Nezapomente definovat MAX_JOBS na svůj využitý počet #define MAX_JOBS 50 //přímo v includu Pro kontrolu hráčového jobu využijte (14 znamená id jobu): if(PlayerJob(playerid,==,14) ) Nezapomeňte nahoru do módu: #include <DJS> Důležité: Job vytvoříte pomocí: AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminutnapodobnepozici,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon) Nezapomeňte, funguje to na jednoduchém principu, zkrátka čím výš bude AddJob(...), tím menší je ID tohoto jobu: AddJob("Policista",2029.7307,1349.2823,10.8203,B_ORANZOVA,5,299,241,264,23,32,31,B_ORANZOVA,34); //toto zaměstnání bude mít id 0, protože je nahoře AddJob("Urednik",2040.5896,1344.0265,10.6719,B_MODR,5,299,241,264,0,0,0,B_MODR,34); //toto zaměstnání bude mít id 1, protože je uprostřed AddJob("Popelar",2049.5200,1336.1340,10.6719,B_SEDA,5,299,241,264,23,14,0,B_SEDA,34); //toto zaměstnání bude mít id 2, protože je dole Pokud využijete funkci "Jobzadaminutnapodobnepozici"(čiže pokud tam dáte větší číslo než 0), musíte na definovaných podobných pozicích do svého módu přidat public, který bude přičítat minuty z podobného jobu do toho, který požaduje vámi definovaný počet minut na podobném: if(PlayerJob(playerid,==,2) ) { JobNahranoMinut[playerid][4]++; //4 je id podobného jobu } Funkce DeletePlayerJob(playerid) odebere hráči job, tuto funkci můžete použít například když hráče někdo zatkne: DeletePlayerJob(playerid); Vzhledem k tomu, ze planovany projekt nebyl zhotoven, tak vam tento include davam, s pozdravem DaVe */ #include <a_samp> #define MAX_JOBS 50 enum JOB_INFO { Float: Job_X, Float: Job_Y, Float: Job_Z, jobname[70], jobpickup, jobid, jobzadaminut, jobskin1, jobskin2, jobskin3, wep1, wep2, wep3, color, jobmapicon }; new Job[MAX_JOBS][JOB_INFO], JobID[MAX_PLAYERS], JobNahranoMinut[MAX_PLAYERS][MAX_JOBS], VytvorenoJobu; new Menu: JobMenu[MAX_PLAYERS], IsMenu[MAX_PLAYERS], Vyplata[MAX_PLAYERS][MAX_JOBS]; #define PlayerJob(%1,%2,%3) JobID[%1]%2%3 #define DeletePlayerJob(%1) JobID[%1]=-1 forward AddMin(); stock DJS_OnGameModeInit() { SetTimer("AddMin",60000,true); } stock AddJob(job_name[],Float:X,Float:Y,Float:Z,barvatextu,Jobzadaminutnapodobnepozici,skin1,skin2,skin3,weapon1,weapon2,weapon3,jobcolor,mapicon) { if(mapicon > 63 || mapicon < 0 || VytvorenoJobu == MAX_JOBS || Jobzadaminutnapodobnepozici < 0) { if(VytvorenoJobu == MAX_JOBS) { printf("[ DJS ERROR ]: Prekroceny pocet MAX_JOBS"); } if(mapicon > 63 || mapicon < 0) { printf("[ DJS ERROR ]: Chybne ID mapicon"); } if(Jobzadaminutnapodobnepozici < 0) { printf("[ DJS ERROR ]: Chybna definice funkce Jobzadaminutnapodobnepozici"); } }else{ Job[VytvorenoJobu][Job_X] = X; Job[VytvorenoJobu][Job_Y] = Y; Job[VytvorenoJobu][Job_Z] = Z; format(Job[VytvorenoJobu][jobname],70,job_name); Job[VytvorenoJobu][jobzadaminut] = Jobzadaminutnapodobnepozici; Job[VytvorenoJobu][jobid] = VytvorenoJobu; Job[VytvorenoJobu][jobskin1] = skin1; Job[VytvorenoJobu][jobskin2] = skin2; Job[VytvorenoJobu][jobskin3] = skin3; Job[VytvorenoJobu][wep1] = weapon1; Job[VytvorenoJobu][wep2] = weapon2; Job[VytvorenoJobu][wep3] = weapon3; Create3DTextLabel(Job[VytvorenoJobu][jobname],barvatextu,X,Y,Z,100,0); Job[VytvorenoJobu][jobpickup] = CreatePickup(1272,1,X,Y,Z); Job[VytvorenoJobu][jobmapicon] = mapicon; Job[VytvorenoJobu][color] = jobcolor; VytvorenoJobu++; } } stock DJS_OnPlayerPickupPickup(playerid,pickupid) { #pragma unused pickupid for(new DJS=0; DJS<VytvorenoJobu; DJS++) { if(IsPlayerInRangeOfPoint(playerid,2,Job[DJS][Job_X],Job[DJS][Job_Y],Job[DJS][Job_Z])) { JobMenu[playerid] = CreateMenu(Job[DJS][jobname],1, 50.0, 180.0, 400.0, 200.0); AddMenuItem(JobMenu[playerid],0,"Uchazet se o pozici"); AddMenuItem(JobMenu[playerid],0,"Uniforma"); AddMenuItem(JobMenu[playerid],0,"Vyplata"); AddMenuItem(JobMenu[playerid],0,"Nic"); ShowMenuForPlayer(JobMenu[playerid],playerid); IsMenu[playerid] = DJS; } } } stock DJS_OnPlayerSelectedMenuRow(playerid, row) { if(GetPlayerMenu(playerid) == JobMenu[playerid]) { switch(row) { case 0: { DestroyMenu(JobMenu[playerid]); if(JobNahranoMinut[playerid][IsMenu[playerid]] < Job[IsMenu[playerid]][jobzadaminut]){ SendClientMessage(playerid,-1,"Nemáš dostatečnou praxi na podobné pozici"); return 1;} if(JobID[playerid] == Job[IsMenu[playerid]][jobid]){ SendClientMessage(playerid,-1,"Již u nás pracuješ, kolego"); return 1;} JobID[playerid] = Job[IsMenu[playerid]][jobid]; SendClientMessage(playerid,-1,"Vítej v nové práci kolego, snaž se plnit svoji práci"); GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep1],5); GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep2],5); GivePlayerWeapon(playerid,Job[IsMenu[playerid]][wep3],5); SetPlayerColor(playerid,Job[IsMenu[playerid]][color]); } case 1: { DestroyMenu(JobMenu[playerid]); if(JobID[playerid] != Job[IsMenu[playerid]][jobid]){ return SendClientMessage(playerid,-1,"Uniformy dáváme jen zaměstnancům"); } switch(random(3)) { case 0: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin1]); case 1: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin2]); case 2: SetPlayerSkin(playerid,Job[IsMenu[playerid]][jobskin3]); } } case 2: { DestroyMenu(JobMenu[playerid]); if(Vyplata[playerid][IsMenu[playerid]] == 0) return SendClientMessage(playerid,-1,"Nemáte u nás peníze"); GivePlayerMoney(playerid,Vyplata[playerid][IsMenu[playerid]]); Vyplata[playerid][IsMenu[playerid]] = 0; } } } return 1; } public AddMin() { for(new i=0; i<MAX_PLAYERS; i++) { if(IsPlayerConnected(i) && JobID[i] != -1) { JobNahranoMinut[i][JobID[i]]++; } } } stock GivePlayerJobCashForGet(playerid,cash) { if(IsPlayerConnected(playerid) && JobID[playerid] != -1) { Vyplata[playerid][JobID[playerid]]+=cash; } } stock DJS_OnPlayerConnect(playerid) { for(new i=0;i<MAX_JOBS;i++) { #if defined Streamer_IncludeFileVersion CreateDynamicMapIcon(Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],-1,-1,-1,-1,100); #else SetPlayerMapIcon(playerid,i,Job[i][Job_X],Job[i][Job_Y],Job[i][Job_Z],Job[i][jobmapicon],i,MAPICON_GLOBAL); #endif JobNahranoMinut[playerid][i] = 0; } JobID[playerid] = -1; }
-
No když jsem tam byl..Byl jsem zklamanej. rikal jsem si že to snad není ani mozny ze si to dělal ty.
tak to me laka server zaheslovat pokud to spini moji povest v nehotovem stavu
Ted kdyz vidím že nemáš čas atd tak to chápu, a věřím že to někam dotáhneš Každopádně Pokud by si chtěl mohu ti i nějak pomoct. Aby si věděl kdo jsem tak jen napíšu - DEXTER- CarDM
BTW: na kontrolu rakety nepotřebuješ timer ale stačí streamer
diky za nabidku kamo kdyz budu potrebovat, obratim se na tebe
zitra kdyz bude cas, opravim tu buglou raketu
-
jojo, jsou tam bugy :-) hodne bugu zatim delal jsem vse do jednoho timeru do MultiTimer() aby nebyl server vytezovan, nechtel jsem opakovat vytizeni serveru jako s modem TT, kde jsem mel timeru dost a pak ubiral abych snizil vytizeni cpu, proto tam nemam specialni timer na raketu zatim :-) mod tehdy byl spusten a zaheslovam na serveru, nebyl tehdy urcen k okamzitemu hrani, chtel jsem ho dodelat pred oficialnim spustenim, tehdy jsem s tim sekl ted ale nemam auto takze po praci byvam doma (kdyz to jde, boucham prescasy, takze zase extra moc casu na to taky neni), jinak hodlam si s tim vyhrat a mam hodne dobrych napadu nyni dodelavam mapu, kterou jsem tehdy sveril CJ2o15, meli jsme ji delat na pul ja udelal zaklad, cj mel udelat ostatni, nemel taky moc casu kdyz se zadari budete cubrnet, ale nebude to hned kazdodenni pawneni jako drive
-
ja nemel v planu se vracet k pawnu ted co se mi rozsypala spojka na tempre, prodal jsem ji a byvam ted doma po praci... premyslel jsem nad tvorbou RP modu , udelal jsem na nej i include job systemu, ale nechce se mi s tim zase drbat buh vi jak dlouho, napadlo me kdybych dodelal revolt dle svych napadu, ktere jsem mel kdysi, uvidime jak to pujde
Run time error 19
v Herní (SA:MP, CS apod.)
Odesláno:
pravdepodobne nemas k modu na serveru potrebny plugin