ExiRang
-
Příspěvků
139 -
Registrován
-
Aktivní
-
Vítězných dnů
1
Content Type
Profiles
Forums
Calendar
Gallery
SA-MP
Příspěvky posted by ExiRang
-
-
Začnu hned od první věci co jsem si všiml. Autoškola jde udělat 2x za sebou, i když jsem vlastníkem průkazu. To si myslím, že by se nemělo stát, přinejmenším bych hráče po splnění zkoušky spawnul jinde než na pickupu pro začátek autoškoly a tu bych pro něj pak zamkl (aby se nedostal do interiéru. Narazil jsem na podivný název - Autobus škola - na tom jsem se hodně zasmál Mimochodem stejná chyba jako u klasické autoškoly pro skupinu B. Rozhodně bych nechal autoškoly na všechny skupiny (ano, autoškola se dělí na skupiny, pro které chceš řidičské oprávnění) na jednom místě. Hraju, hraju, najednou ke mně přijde lékař a zatkne mě, přitom v okamžiku kdy se chtěl zaměstnat, mu to mód nepovolil, protože neměl zbrojní průkaz, který si ani následně nedělal).
Pak jsou tam chyby spíš na logické úrovni. Teleportnu se pomocí příkazu /sf (nebo jakéhokoli jiného na stejném principu), skryjí se mi zbraně, nikde mě nic neinformuje, proč se mi skryly zbraně, nemohu se bránit útoku jiných hráčů.
Tutoriál na začátku hraní je otravný, 90% lidí ho přeskočí. Status Nováček by měl být nějak viditelný i mně. Co udělá takový Nováček, když k němu někdo přiběhne a začne po něm házet granáty? Začne se bránit. Pokud by byl dostatečně informován, že se mu nemůže nic stát, nebránil by se a nepřišel tak ani o status Nováček.
Přemýšleli jste o zneužívání povolání během hraní?
Nápady jsou tam dobré, ale zdaleka nejsou dotažené do konce a doprovází je mnohdy základní chyby.
Za mě 4 body z 10.
-
____
radsej si uvedom ze toto ma uz teraz 80percent "uspesnych" zahranicnych serverov,... podla mna to ma byt samozrejmost kazdeho servera ktory chce nieco dosiahnut. cz/sk samp scena je strasne pozadu. A co mam ocenit? ved to ani nevyzera pekne.
btw 80% czsk serverov ma rze7.4
Ty jsi strašný odborník. Zasvěť mě. Ukaž mi 80% zahraničních serverů, které toto mají. CZ/SK nejsou zaostalí. Zaostalí jsou jen ti, co mají RZE a 15 FS (in 1) loaded. Jak říkám do roka to bude mít 80% CZ/SK serverů. Zbytek není zaostalej, chce něčeho dosáhnout a není samozřejmost, že toto má. Vůbec jsi nepochopil, k čemu jsem to sem dával. Je to crasher tvého mozku.
Omlovám se za pi**viny, které tu teď řeším, ale bohužel... Když tu začne někdo shazovat kvalitu nějaké práce a sám umí ho***, se kterým se navíc vychloubá (mám na mysli příšerné hry v C#, dobově tak z 1990), tak to nedokážu přehlížet. AW.Tom nejdřív zprovozni mozek, pak se ozývej.
Jo a hlavně začni, jak tu bývá zvykem, křičet, že jsem to okopčil z nějakých zahraničních serverů. To pak bude nejnádhernější konec.
Rohlikar:
Už mě moc nenapadlo co bych ještě přidal, takže jsem to nechal tak, navíc už Pawn ani nekódím. Každopádně díky.
-
Epické postni to i na samp forum,tam to bude mit větší ohlas
Jo no, tady si ty lamy nezaslouží nic. Neocení to, ale za rok to bude mít zas 80% CZ/SK serverů.
-
Problém vyřešen. Na řádku měl:
CreateDynamicObject(1239,31.0,1226.8239,-773.0059,1084.0048,0.0,0.0,31.0);
Ale funkce vypadá takto:
CreateDynamicObject(modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz, worldid = -1, interiorid = -1, playerid = -1, Float:streamdistance = 300.0);
-
Challenge accepted!
-
handstyle:
"WEBDESIGN NAVRHOL EnG A NAKÓDOVAL HO EnG" > Používej raději "Created by EnG"
K CSS3 a HTML5:
Zajímalo by mě jak řešíš podporu pro starší prohlížeče, které CSS3 a HTML5 nepodporují?
Web vypadá jako nedávno vytvořený. Když ti skončila doména, měl jsi přece hotovo. Mohl jsi alespoň zprovoznit odkaz na reference + přidat reference.
-
Dám to i za 0:0:0:001 Jako těchto her je spousta. Přidej tam něco co bude zajímavý a odlišný od ostatních "kravinek". A jak tu bylo zmíněno výše, přidej překážky + například posbírání nějakých klíčů atd.
-
Pekné až na tie proporcie textu..sú hrozne sploštené, vyzerá to neprirodzene A inak, sa mi to zdá alebo naozaj tie farby položiek idú postupne od šedej až po bielu?
Tak proporce si každý už může v kódu doladit podle sebe a nebo změní styl písma, který na to asi taky bude mít vliv. A ano, ty barvy jsou ve stupních šedi. Když si rozevřeš „Podrobnější ukázka“ v prvním příspěvku (poslední spoiler), uvidíš jak jsem dal barvy. Moc jsem si nehrál s tím, aby to na screenech vypadalo nejlíp.
No a dají se využít třeba jako náhrada dialogů, nebo třeba klasického GTA menu.
-
co je na tom "profi" ?
Děkuji za tvoji vyčerpávající otázku.
Mimochodem pokud sis přečetl titulek a pak prohlídl obrázky, na kterých jsem naházel položky v šedé barvě, je to opravdu málo k pochopení.
Profi je myšlené spíš z pohledu obsluhy menu. Ale tak abyste neřekli, já to slovíčko vymažu, ať tu nemluvíte celou dobu jen o něm.
-
Zdravím vás.
S tvorbou věcí do SA-MP končím, takže se s vámi podělím o menu, které se mělo původně nacházet jen v módu The San Fierro City. S módem jsme však skončili z důvodu nedostatku času a nabývajícího odporu k tvorbě.
Skriptů mám dost, ale většinou jsou to takové blbůstky. Ovšem tento skript, se kterým se s vámi podělím, je škoda jen tak nechat ležet. Dal jsem si s ním spoustu práce a vypadá hodně slušně. Dá se použít i ve větších projektech.
A co že to tedy je? Jedná se o klikatelné menu, které se dynamicky vytváří pomocí textdrawů.Tímto menu se dají v pohodě nahradit dialogy, nebo třeba původní GTA menu.
Začnu popisem, jak menu vypadá, jak funguje.
Vlastní přizpůsobení menu:
Menu se dá nastavit přesně podle vašich představ (samozřejmě v rámci možností samp).
Začnu vzhledem. Menu se dá nastavit barva pozadí, šířka a umístění na obrazovce (X, Y).
U titulku můžete samozřejmě nastavit text, styl písma a barvu textu.
Další, co už se vzhledu netýká, je, komu chcete menu zobrazit, jaké ID menu má mít (pro identifikaci menu jako v dialozích) a jestli má menu mít možnost být zavřené (zmáčknutí ESC).
Pokud zvolíte, že menu nesmí být zavíratelné (hráč musí zvolit nějakou položku aby mohl zavřít menu), bude se menu při zmáčknutí ESC znovu otvírat. V opačném případě se vyvolá callback funkce, ve které se dozvíte, že hráč zavřel menu, menu se skryje a pak je jen na vás, co s tím budete dělat, jestli ho zničíte, nebo znovu zobrazíte (což je zbytečné, pokud nastavíte menu, že jej nelze zavřít).
Při tvorbě musíte zadat i pozadí položky při najetí (u textdrawů zatím nelze vícebarevné označení aktivní položky). Což znamená, že každá položka bude po najetí myší označená stejně.
Každé položce se však dá nastavit jakákoliv barva pozadí, různý styl písma u každé položky a barva písma. Další věc co můžete nastavit položce, je, jestli bude klikatelná. Pokud zvolíte že ne, nepůjde na ni kliknout (hodí se například pro podnadpisy). Položkám se však nedá zpětně měnit žádné nastavení.
Callbacky:
V skriptu se nachází 2 callbacky, které musíte mít vložené v módu / skriptu. Pokud tak neučiníte, bude vám compiler hlásit, že jste je nezapsali, neuvedli - chcete-li (anglicky: function "XXX" is not implemented). Takže o jaké callbacky jde:public OnPlayerClickPlayerMenu(playerid, menuid, listitem) { } public OnPlayerClosePlayerMenu(playerid, menuid) { }
Nepotřebují returny, ale já defaultně používám v ukázce return 1;
Funkce pro vytváření menu:
Tak a už se dostáváme k samotným funkcím, které se budou používat pro vytváření menu, přidávání položek, zobrazování, skrývání, ničení nebo pro kontrolu existence menu.
Varování! Pokud již máte pro hráče nějaké menu vytvořené a zavoláte znovu tuto funkci, vytvořené menu se zničí!
Menu vytvoříte jednoduše tímto příkazem:playerMenuCreate(playerid, menuid, Float:menuX, Float:menuY, Float:menuWidth, titleText[], titleFont, titleColor, backgroundColor, buttonColorHover, bool:isExitable); playerid = ID hráče, pro kterého se menu má vytvořit menuid = nastavení ID menu, podle kterého pak budete určovat, v jakém menu uživatel kliknul, případně jaké menu zavřel menuX, menuY = určení pozice menu menuWidth = určení šířky menu titleText = text, který bude uvedený v titulku menu titleFont = styl písma (jako u textdrawů) titleColor = barva textu v titulku menu backgroundColor = barva pozadí celého menu buttonColorHover = barva označení tlačítka po najetí na něj isExitable = true / false | určení, jestli menu půjde zavřít pomocí klávesy ESC
Takže máte inicializované menu.
Nyní je třeba přidat nějaké položky, na které pak budete moci klikat:playerMenuAddItem(playerid, itemText[], itemFont, textColor, buttonColor, bool:isDisabled); playerid = ID hráče, kterému se položka do menu přidá itemText = text v položce itemFont = styl písma v položce textColor = barva textu v položce buttonColor = barva pozadí položky isDisabled = určení, jestli položka nebude klikatelná, nebo ano
Maximální počet položek je limitován (v definici MAX_MENU_ITEMS) defaultně na 15 položek
Už máte sestavené menu.
Pro zjištění, jestli nějaké menu hráč má vytvořené (je jedno jestli zobrazené nebo skryté), je zde funkce:playerMenuExists(playerid); Vrací hodnotu true při existenci. V opačném případě vrátí false.
Menu nyní stačí zobrazit hráči:
playerMenuShow(playerid); playerid = ID hráče, kterému se sestavené menu (pro něj) zobrazí
Pro skrytí menu slouží funkce:
playerMenuHide(playerid);
Pro zničení menu (pokud ho již nepotřebujete) je tato funkce:
playerMenuDestroy(playerid);
Kompletní ukázka použití se nachází níže u přiloženého includu. V includu se dále nachází definice MAX_PLAYERS_EX s výchozí hodnotou 250. Pokud ji chcete nastavit v módu / FS, před includováním si ji definujte sami. Ukázka:
#define MAX_PLAYERS_EX 100 #include menu_system
To samé s MAX_MENU_ITEMS.
Menu používá 2 + počet položek * 2 player textdrawů.
Obrázková ukázka menu:
Myší najeto na první položku
Myší najeto na 6. položku:
Includ (+ obyčejná ukázka):
Pastebin: http://pastebin.com/8Y7HgdGH
Kód:#if defined menu_system #endinput #endif #define menu_system #if !defined MAX_PLAYERS_EX #define MAX_PLAYERS_EX 250 #endif #if !defined MAX_MENU_ITEMS #define MAX_MENU_ITEMS 15 #endif //#################################| Natives |################################## /* native playerMenuCreate(playerid, menuid, Float:menuX, Float:menuY, Float:menuWidth, titleText[], titleFont, titleColor, backgroundColor, buttonColorHover, bool:isExitable); native playerMenuAddItem(playerid, itemText[], itemFont, textColor, buttonColor, bool:isDisabled); native playerMenuShow(playerid); native playerMenuHide(playerid); native playerMenuDestroy(playerid); native bool:playerMenuExists(playerid); */ //#################################| Forwards |################################# forward playerMenuCreate(playerid, menuid, Float:pm_x, Float:pm_y, Float:pm_width, titleText[], titleFont, titleColor, bgColor, buttonColorIn, bool:exitable); forward playerMenuAddItem(playerid, itemText[], itemFont, textColor, buttonColor, bool:disabled); forward playerMenuShow(playerid); forward playerMenuHide(playerid); forward playerMenuDestroy(playerid); forward bool:playerMenuExists(playerid); //Callbacks forward OnPlayerClickPlayerMenu(playerid, menuid, listitem); forward OnPlayerClosePlayerMenu(playerid, menuid); //################################| Variables |################################# enum PLAYER_MENU_DATA{ bool:menuExitable, bool:menuCreated, Float:itemWidth, Float:itemPosX, Float:itemPosY, itemColorIn, itemsCount, menuID } new playerMenuData[MAX_PLAYERS_EX][PLAYER_MENU_DATA]; new PlayerText:playerMenuBackground[MAX_PLAYERS_EX]; new PlayerText:playerMenuItem[MAX_PLAYERS_EX][MAX_MENU_ITEMS * 2]; new PlayerText:playerMenuTitle[MAX_PLAYERS_EX]; //#################################| Publics |################################## public playerMenuCreate(playerid, menuid, Float:pm_x, Float:pm_y, Float:pm_width, titleText[], titleFont, titleColor, bgColor, buttonColorIn, bool:exitable){ if(playerMenuExists(playerid)){ playerMenuDestroy(playerid); } //Background new Float:TXTD_posX = pm_x + pm_width; playerMenuBackground[playerid] = CreatePlayerTextDraw(playerid, TXTD_posX, pm_y, "_"); PlayerTextDrawBackgroundColor(playerid, playerMenuBackground[playerid], 255); PlayerTextDrawFont(playerid, playerMenuBackground[playerid], 1); PlayerTextDrawLetterSize(playerid, playerMenuBackground[playerid], 1.0, 1.6); PlayerTextDrawColor(playerid, playerMenuBackground[playerid], -1); PlayerTextDrawSetOutline(playerid, playerMenuBackground[playerid], 0); PlayerTextDrawSetProportional(playerid, playerMenuBackground[playerid], 0); PlayerTextDrawSetShadow(playerid, playerMenuBackground[playerid], 1); PlayerTextDrawUseBox(playerid, playerMenuBackground[playerid], 1); PlayerTextDrawBoxColor(playerid, playerMenuBackground[playerid], bgColor); PlayerTextDrawTextSize(playerid, playerMenuBackground[playerid], pm_x, 1.0); PlayerTextDrawSetSelectable(playerid, playerMenuBackground[playerid], 0); //Title playerMenuTitle[playerid] = CreatePlayerTextDraw(playerid, pm_x + 4, pm_y + 2, titleText); PlayerTextDrawBackgroundColor(playerid, playerMenuTitle[playerid], 255); PlayerTextDrawFont(playerid, playerMenuTitle[playerid], titleFont); PlayerTextDrawLetterSize(playerid, playerMenuTitle[playerid], 0.44, 1.0); PlayerTextDrawColor(playerid, playerMenuTitle[playerid], titleColor); PlayerTextDrawSetOutline(playerid, playerMenuTitle[playerid], 0); PlayerTextDrawSetProportional(playerid, playerMenuTitle[playerid], 1); PlayerTextDrawSetShadow(playerid, playerMenuTitle[playerid], 1); PlayerTextDrawSetSelectable(playerid, playerMenuTitle[playerid], 0); //Settings for buttons playerMenuData[playerid][menuExitable] = exitable; playerMenuData[playerid][menuCreated] = true; playerMenuData[playerid][itemColorIn] = buttonColorIn; playerMenuData[playerid][itemsCount] = 0; playerMenuData[playerid][itemWidth] = pm_width - 6; playerMenuData[playerid][itemPosX] = pm_x + 3; playerMenuData[playerid][itemPosY] = pm_y + 16; playerMenuData[playerid][menuID] = menuid; } public playerMenuAddItem(playerid, itemText[], itemFont, textColor, buttonColor, bool:disabled){ if(playerMenuExists(playerid)){ if(playerMenuData[playerid][itemsCount] + 1 < MAX_MENU_ITEMS){ new ID = playerMenuData[playerid][itemsCount] * 2; PlayerTextDrawLetterSize(playerid, playerMenuBackground[playerid], 1.0, 1.7 + (++playerMenuData[playerid][itemsCount] * 1.885)); //Menu item background playerMenuItem[playerid][ID] = CreatePlayerTextDraw(playerid, playerMenuData[playerid][itemPosX], playerMenuData[playerid][itemPosY] + ((playerMenuData[playerid][itemsCount] - 1) * 17), "LD_SPAC:white"); PlayerTextDrawBackgroundColor(playerid, playerMenuItem[playerid][ID], 255); PlayerTextDrawFont(playerid, playerMenuItem[playerid][ID], 4); PlayerTextDrawLetterSize(playerid, playerMenuItem[playerid][ID], 1.0, 1.0); PlayerTextDrawColor(playerid, playerMenuItem[playerid][ID], buttonColor); PlayerTextDrawSetOutline(playerid, playerMenuItem[playerid][ID], 0); PlayerTextDrawSetProportional(playerid, playerMenuItem[playerid][ID], 1); PlayerTextDrawSetShadow(playerid, playerMenuItem[playerid][ID], 1); PlayerTextDrawUseBox(playerid, playerMenuItem[playerid][ID], 1); PlayerTextDrawBoxColor(playerid, playerMenuItem[playerid][ID], 255); PlayerTextDrawTextSize(playerid, playerMenuItem[playerid][ID], playerMenuData[playerid][itemWidth], 17.0); if(!disabled) PlayerTextDrawSetSelectable(playerid, playerMenuItem[playerid][ID], 1); else PlayerTextDrawSetSelectable(playerid, playerMenuItem[playerid][ID], 0); //Menu item text ID++; if(itemFont > 3) itemFont = 3; else if(itemFont < 0) itemFont = 0; playerMenuItem[playerid][ID] = CreatePlayerTextDraw(playerid, playerMenuData[playerid][itemPosX] + 3, playerMenuData[playerid][itemPosY] + ((playerMenuData[playerid][itemsCount] - 1) * 17) + 3, itemText); PlayerTextDrawBackgroundColor(playerid, playerMenuItem[playerid][ID], 255); PlayerTextDrawFont(playerid, playerMenuItem[playerid][ID], itemFont); PlayerTextDrawLetterSize(playerid, playerMenuItem[playerid][ID], 0.44, 1.0); PlayerTextDrawColor(playerid, playerMenuItem[playerid][ID], textColor); PlayerTextDrawSetOutline(playerid, playerMenuItem[playerid][ID], 0); PlayerTextDrawSetProportional(playerid, playerMenuItem[playerid][ID], 1); PlayerTextDrawSetShadow(playerid, playerMenuItem[playerid][ID], 1); PlayerTextDrawSetSelectable(playerid, playerMenuItem[playerid][ID], 0); } } } public playerMenuShow(playerid){ if(playerMenuExists(playerid)){ PlayerTextDrawShow(playerid, playerMenuBackground[playerid]); PlayerTextDrawShow(playerid, playerMenuTitle[playerid]); for(new i; i < playerMenuData[playerid][itemsCount] * 2; i++){ PlayerTextDrawShow(playerid, playerMenuItem[playerid][i]); } SelectTextDraw(playerid, playerMenuData[playerid][itemColorIn]); } } public playerMenuHide(playerid){ if(playerMenuExists(playerid)){ PlayerTextDrawHide(playerid, playerMenuBackground[playerid]); PlayerTextDrawHide(playerid, playerMenuTitle[playerid]); for(new i; i < playerMenuData[playerid][itemsCount] * 2; i++){ PlayerTextDrawHide(playerid, playerMenuItem[playerid][i]); } CancelSelectTextDraw(playerid); } } public playerMenuDestroy(playerid){ if(playerMenuExists(playerid)){ PlayerTextDrawDestroy(playerid, playerMenuBackground[playerid]); PlayerTextDrawDestroy(playerid, playerMenuTitle[playerid]); for(new i; i < playerMenuData[playerid][itemsCount] * 2; i++){ PlayerTextDrawDestroy(playerid, playerMenuItem[playerid][i]); } playerMenuData[playerid][menuCreated] = false; playerMenuData[playerid][itemColorIn] = 0; playerMenuData[playerid][itemsCount] = 0; playerMenuData[playerid][itemWidth] = 0; playerMenuData[playerid][itemPosX] = 0; playerMenuData[playerid][itemPosY] = 0; playerMenuData[playerid][menuID] = 0; } } public bool:playerMenuExists(playerid){ return playerMenuData[playerid][menuCreated]; } public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid){ if(playerMenuExists(playerid)){ for(new i; i < playerMenuData[playerid][itemsCount]; i++){ if(playertextid == playerMenuItem[playerid][i * 2]){ OnPlayerClickPlayerMenu(playerid, playerMenuData[playerid][menuID], i); return 1; } } } return 0; } public OnPlayerClickTextDraw(playerid, Text:clickedid){ if(playerMenuExists(playerid) && _:clickedid == 65535){ if(!playerMenuData[playerid][menuExitable]) playerMenuShow(playerid); else{ playerMenuHide(playerid); OnPlayerClosePlayerMenu(playerid, playerMenuData[playerid][menuID]); } } return 0; } //##################################| USAGE |################################### /* ## IMPORTANT public OnPlayerConnect(playerid){ playerMenuDestroy(playerid); return 1; } public OnPlayerDisconnect(playerid, reason){ playerMenuDestroy(playerid); return 1; } ## CALLBACKS CATCHING RESPONSES public OnPlayerClickPlayerMenu(playerid, menuid, listitem){ if(menuid == 1){ switch(listitem){ case 0: return SendClientMessage(playerid, 0xff5555ff, "Klikl jsi na 1. polozku"); case 1: return SendClientMessage(playerid, 0xff5555ff, "Klikl jsi na 2. polozku"); case 2: return SendClientMessage(playerid, 0xff5555ff, "Klikl jsi na 3. polozku"); } playerMenuHide(playerid); playerMenuDestroy(playerid); } return 1; } public OnPlayerClosePlayerMenu(playerid, menuid){ playerMenuHide(playerid); playerMenuDestroy(playerid); return 1; } ## CREATING MENU public OnPlayerCommandText(playerid, cmdtext[]){ if(!strcmp("/test", cmdtext, true)){ playerMenuCreate(playerid, 1, 200, 200, 200, 0x595959aa, "Nadpis menu", 1, 0xffffffff, 0xabababff); playerMenuAddItem(playerid, "Nadpis v menu", 2, 0xccccccff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 1", 2, 0xccccccff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 2", 2, 0xccccccff, 0x232323ff, false); playerMenuShow(playerid); return 1; } return 0; } */
Podrobnější ukázka (plně funkční) + má vlastní zjednodušující funkce na výpis formátovaných zpráv:
Pastebin: http://pastebin.com/e2pGd6cY
Kód:#include a_samp #include menu_system stock FormattedSCM(playerid, color, str[], {Float,_}:...){ new output[140], tmpOp[12], args = numargs(), args_readed = 2; if(args > 3){ for(new i; str[i]!='\0'; i++){ if(str[i] == '%' && args_readed < args){ switch(str[++i]){ case 's':{ new tmpchr; new a; args_readed++; while(a==a){ tmpchr = getarg(args_readed,a++); if(tmpchr=='\0') break; format(output, sizeof(output), "%s%c", output, tmpchr); } } case 'c','d','f','i','x':{ format(tmpOp, sizeof(tmpOp),"%%s%%%c",str[i]); format(output, sizeof(output), tmpOp, output, getarg(++args_readed)); strdel(tmpOp,0,strlen(tmpOp)); } case '%': format(output,sizeof(output),"%s%%%%",output); default: format(output,sizeof(output),"%s%c",output,str[i]); } } else{ format(output,sizeof(output),"%s%c",output,str[i]); } } } else{ strdel(output,0,sizeof(output)); strins(output,str,0); } if(playerid < 0) SendClientMessageToAll(color, output); else SendClientMessage(playerid, color, output); } public OnPlayerConnect(playerid){ playerMenuDestroy(playerid); return 1; } public OnPlayerDisconnect(playerid, reason){ playerMenuDestroy(playerid); return 1; } public OnPlayerClickPlayerMenu(playerid, menuid, listitem){ FormattedSCM(-1, 0x33ff33ff, "Opened menu / Playerid: %d | MenuID: %d | ListItem: %d", playerid, menuid, listitem); playerMenuHide(playerid); playerMenuDestroy(playerid); return 1; } public OnPlayerClosePlayerMenu(playerid, menuid){ FormattedSCM(-1, 0x33ff33ff, "Closed menu / Playerid: %d | MenuID: %d", playerid, menuid); playerMenuHide(playerid); playerMenuDestroy(playerid); return 1; } public OnPlayerCommandText(playerid, cmdtext[]){ if(!strcmp("/create", cmdtext, true)){ playerMenuCreate(playerid, random(1000), 20+random(130), 20+random(130), 160+random(100), "Testovaci menu", 1, 0xffffffff, 0x59595977, 0x898989ff, true); playerMenuAddItem(playerid, "Polozka 1", 1, 0x666666ff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 2", 1, 0x777777ff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 3", 1, 0x888888ff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 4", 1, 0x999999ff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 5", 1, 0xaaaaaaff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 6", 1, 0xbbbbbbff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 7", 1, 0xccccccff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 8", 1, 0xddddddff, 0x232323ff, false); playerMenuAddItem(playerid, "Polozka 9", 1, 0xeeeeeeff, 0x232323ff, false); playerMenuShow(playerid); return 1; } return 0; }
Vysvětlení funkce FormattedSCM:
FormattedSCM(playerid, barva, string, parametry...); Použití: FormattedSCM(playerid, 0xFFFFFFFF, "Ahoj já jsem %s věta a obsahuji navíc číslo %d.", "testovací", 6); Pokud za playerid dáte -1, zpráva se pošle všem.
Nic jsem nekopíroval, vše je čistě má práce. Pokud se někdo diví, proč mám v includu použití popsané anglicky, je to proto, že jsem zvyklý psát kód v angličtině, tak jsem tam dopsal anglicky i použití, které jsem tu ostatně celkem podrobně popsal.
Doufám, že se vám skript hodí, protože mně už k ničemu není. -
Nejlepší způsob, který existuje, je ten co zmínil niCe... Já ho používám už půl roku. Má své mouchy například (zatím o jiném nevím) u Infernusu, kde se velocity zvedá i potom. Ale není to 100% způsob. Spolehlivější je informovat adminy. A kontrolovat to v OnPlayerUpdate. Sekundový časovač je k ničemu. Příklad: Přijdu na server k někomu. Zmáčku v autě velmi krátce (defaultní) klávesu R (funkce sobeitu, prudké zrychlení a naražení do překážky). Vem si že přede mnou bude hráč, kterého ten náraz odhodí. Dostane větší zrychlení než by měl. => Dostane kick.
Dostane ho neoprávněně a už může být naštvaný. Takže: OnPlayerUpdate a kontrola zrychlení (jen jestli nepřekročil maximálku - ono to stačí i na L. ALT) a při větším zrychlení okamžitý kick (zabrání se tím poškození auta jiného hráče). Ovšem je to na úkor zátěže.
-
Nejsem pravý pawner. Jsem levý pawner, který nemá rád NEreálnou zemi. A lidi tam chodí jen proto, že ten server má hodně hráčů a mají tam hovadiny, které, jak už jsem řekl, s REÁLEM nemají nic. A WTLS... Ano, to je jediný úspěšný server, který je propracovaný. Ten si zaslouží i více hráčů než RZE.
Ke všemu: Mód nedělal pravý pawner. Kdyby jo, udělá vše sám. 75% módu je nakopírovaných z ostatních módů, či skriptů.
- 4
-
Na jak dlouho máš na RZE VIP? Řekni mi čím zaujme RZE?
Wizard: To není klan, to je ExiRang.
-
Jde o to, že ATomas vymyslel něco, co má mít úplně jiný název.
Každý poslední dobou říká "tvl toto je strašně reálné, když tu jsou /warpy", ale nikdo se nezamyslí nad RZE.
-
- Popular Post
- Popular Post
Nazdárek. Určitě si říkáte, co za vola to píše o "nejlepší" RZE?!
Toto téma je tak vlastně o všem a o ničem.
Přečtěte si toto celé (Moderátoři či Admini - nemažte to) a docvakne vám ta pravda.
Dnes jsem tak přemýšlel, co že to ta RZE vlastně je?
Zkratka by MĚLA znamenat Reálná Země že?
Ano, ovšem zamyslete se, co je tam vlastně reálného? Teleporty? Nastavení veřejné pozice pro teleport? Nebo snad příkaz /kill? O dalších příkazech ani nemluvě. Co je tam vlastně reálného? Nemělo se to spíš jmenovat "Všehochuť blbost"? No ale to se dá přejít mávnutím ruky. Co se přejít nedá, je s prominutím demence hráčů, kterému já říkám RZE syndrom. Přijdou na promakanější server než je samotinká RZE a nadávají, proč nejde například /setloc, proč nejde /carmenu, ať jim admini dají průkazy a zkušenosti.
A já toho začínám mít po krk. Celá CZ / SK scéna je tímto odloučená od normálních hráčů a syndrom se šíří dál.
Teď pár slov k tvůrci:
ATomasi, opravdu jsi na svůj mód pyšný? Neříkal sis někdy "A dost s touto sr**kou, začnu na něčem lepším."? Asi ne, jinak bys ji nerozvíjel. Na CZ/ SK scéně jsou daleko lepší servery, které si opravdu zaslouží hráčů alespoň 100. Jenže každý server je RZE 7 až 8.. Semtam se objeví nějaký server z vlastní tvorby (asi 15% celkově ze 100).
Teď něco pro hráče tohoto módu:
Co vás vlastně, vy hráči, baví na RZE? Eventy se dají dělat i na základním módu od vývojářů samp - Grand Larceny. Co tam vlastně děláte kromě zabíjení a ježdění v nějakém dopravním prostředku? Tuším že nic.
Poslední věta na závěr:
Jestli si myslíte, že závidím ATomasovi, že on udělal tak "kvalitní a super" server, jste na omylu. Začíná mě štvát, že ničíte myšlení ostatních hráčů vašima nereálnýma prvkama.
- 11
-
/givecash ID -1000000 vam da penize.
/bug jde bez textu
/navrh jde bez textu
Dane platim z minusu a dostavam XP (zkusenosti) za radne placeni dani. Dohromady tam neni vubec nic. Na zaver se mi ukazalo Server closed the connection. Pry jsem byl vybanovany (mi rekl kamarad, ktery nasledne byl taky vybanovany), ale duvod nikde.
*Blby admin - nechape ze nekdo ma v samp download 1600 kb/s a mysli ze to je rychlost normalni. Leroy (at si prosim liskne).
- z niceho nic prileti a "like a boss" nas zabije stihackou. Si mysli ze kdyz je admin tak je king.
Udelal bych zmenu a zacal bych modem, skoncil bych admin teamem.
0 / 1000 a to davam obvykle jen 480 / 1000 za to ze nekdo jen prezentuje mod. Smazte to.Mimochodem ten kdo to psal at se nauci cestinu.
-
Jasný no, jen to je stále beta verze, pořád to prochází testama ale zatím žádný problém.
Ještě chci upravit nějak vyskakovací okno se statusem dole, aby se ukázalo ve středu obrazovky před veškerým obsahem.
A trošku jsem to tam pozměnil (překlady).
-
Jake vyuziti to ma na public serverech? Myslis ze kazdy bude nadseny hned stahovat a instalovat / spoustet nejaky program a hrat na serveru?
- 2
-
Myslel jsem to tak, že pokud ti vadí že existuje, tak sem psát nemusíš. Říká ti něco KONSTRUKTIVNÍ KRITIKA? To ten tvůj názor vůbec nebyl. Je jich možná dost, ale neviděl jsem ještě nějaký, který by měl i český / slovenský překlad pro větší pohodlí těch neznalých cizím jazykům. Navíc, jako jeden z mála má zobrazení stavu konverze videa - to jsem moc taky neviděl.
-
Proč by nemělo být? Nešířím nic, jen dávám možnost online si převést nějaké video. MP3 zůstane uložená 3 dny a pak se smaže (mezitím se nikde neukazuje).
D4n09: No psát sem nemusíš pokud se ti to nelíbí
-
Mně to jede plnou rychlostí (620 kb/s - což mám max).
-
To se dá změnit Do budoucna tam hodím změnitelnost na určité kbps
-
Zdravím, představuji vám web http://youtube.k3s4.sk
Jeho cíl je stahování videa z YouTube a převedení do MP3. Stahuje se video v nejlepší dostupné kvalitě typu mp4 / webm a konvertuje se do MP3 160 kbps. Někdy později bych přidal i více informací, až uvidím, že se hodně používá.
Jedna designová vada je zobrazení stavu konvertování (je v takovém škaredém šedém rámečku). Je zde i možnost stáhnout MP3 pomocí naskenování QR kódu a změna do jiného jazyka. Tak hodnoťte
- 1
-
Vypise zpravu
[GM]San Life
v Herní (SA:MP, CS apod.)
Odesláno:
DonMafia:
O mně můžeš říct to samé? Začal jsem v 16, před 8 lety.
Na tvém místě bych se nepovyšoval. To jen značí, že mód nebude stát za nic. Což ostatně značí i 10 000 skriptů na vše možné.
Další All-in-one nápad. O ničem.