Sziasztok!HP segítség képpen Legendnek átküldött anyagokat a Coreból, viszont az általam készített scripteket én nem engedélyeztem.
Ebben benne volt a Hotkey rendszer amit még késõbb valamire fel szerettem volna használni, egyik egyedisége lett volna a Corenak.
Mikor utoljára nekikezdtünk a Corenak én továbbfejlesztettem ezt a scriptet és kicsit zavart hogy se Jex se az én nevem nélkül be van máshova rakva egy karakternyi módosítás nélkül.
Remélem sokatoknak hasznára válik!Fontos: csak zcmd-t támogat és a módotokba be kell \"includeolni\" és a megfelelõ callback alá írni ezeket az eljárásokat:
- Hotkey_OnDialogResponse
- Hotkey_OnPlayerKeyStateChange
- Hotkey_OnPlayerDisconnect
/*
* Core RPG module: Hotkey rendszer *
készítette: Jex & P3ti
FÜGGVÉNYEK, ELJÁRÁSOK:
Hotkey_Timer(playerid,keys)
Nézi a lenyomott gombok kombinációját
Hotkey_Menu(playerid)
Elõhozza a hotkey kezelõ dialogot.
Hotkey_KeyName(indexedkey)
Kiírja a nem GameTextbe szánt gomb neveket.
Hotkey_Dialog(playerid)
Elõhozza a hotkey elsõ dialogját, amiben be lehet állítani a hotkeyeket
Hotkey_DialogLenyomva(keys)
Kiadja, hogy mik vannak lenyomva
Hotkey_Delete(playerid, hotkeyid)
Hotkey törlése
VÁLTOZÓK: */
new bool:hotkey [ PLAYERS ];
new hotkeytimer [ PLAYERS ];
new hotkey_key [ PLAYERS ][ 66 ][ MAX_HOTKEY_TEXT_SIZE ];
new stringz [ 128 ];
// ELJÁRÁSOK
forward Hotkey_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]);
forward Hotkey_OnPlayerKeyStateChange(playerid, newkeys, oldkeys);
forward Hotkey_OnPlayerDisconnect(playerid, reason);
forward Hotkey_OnPlayerCommandText(playerid, cmdtext[]);
forward Hotkey_Timer(playerid,keys);
public Hotkey_OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==HK_DIALOGID)
{
if(response) { msg(playerid, \"{FF0000}A felvétel elindult.. {FFFFFF}Tartsd nyomva a gombot/gombokat 5 másodpercig.\"); }
else hotkey[playerid] = false;
}
if(dialogid==HK_DIALOGID+1)
{
if(response)
{
new hk = GetPVarInt(playerid,\"hotkey\");
format(hotkey_key[playerid][Hotkey_KeyToIndex(hk)],32,\"%s\",inputtext);
msg(playerid,hotkey_key[playerid][Hotkey_KeyToIndex(hk)]);
// printf(\"hotkey: %d, %s, eredmény: %s\", GetPVarInt(playerid,\"hotkey\"), inputtext, hotkey_key[playerid][Hotkey_KeyToIndex(hk)]);
msg(playerid,\"A hotkey beállítva, a felvétel kikapcsolva!\");
hotkey[playerid] = false;
}
}
if(dialogid==HK_DIALOGID+2)
{
if(response) {
if(listitem == 0)
{
new Hotkey_Desc [ 1024 ];
strcat(Hotkey_Desc,\"{FF0000}» {FFFFFF}Mi az a Hotkey?\\n{A9A9A9}A hotkey egy gombra/gombkombinációra beállított parancs.\\n\\n\");
strcat(Hotkey_Desc,\"{FF0000}» {FFFFFF}Hogy kell Hotkeyt készíteni?\\n{A9A9A9}A /hotkey paranccsal elõjön a Hotkey menü ott rákattintassz a Létrehozás opcióra\\nés elfogadod a dialógust. Majd megnyomod és nyomva tartod a beállítani\\nvaló billentyûkombinációt 5 másodpercig és kész a Hotkey.\\n\\n\");
strcat(Hotkey_Desc,\"{FF0000}» {FFFFFF}Miért érdemes Hotkeyt használnom?\\n{A9A9A9}Mert megkönnyíti a parancsok beírását. Olyan, mint egy beépített Shortkey.\\n\\n\");
strcat(Hotkey_Desc,\"{FF0000}» {FFFFFF}Hogyan tudok törölni Hotkeyt?\\n{A9A9A9}A Hotkey menüben(/hotkey) minden hotkeynek van egy menüpont.\\nRákattintassz a törölni való hotkeyre a listában és törölve van.\");
ShowPlayerDialog(playerid, DIALOG_UNUSED, MSGBOX, \"Hotkey rendszer leírás\",Hotkey_Desc,\"Oké\", \"\");
}
else if(listitem == 1) {
Hotkey_Dialog(playerid);
hotkey[playerid]=true;
}else{
new hotkey_exists = 0;
for(new i=0;i<66;i++)
{
if(strlen(hotkey_key[playerid]) != 0)
{
hotkey_exists++;
if(hotkey_exists == listitem-1)
{
Hotkey_Delete(playerid, i);
msg(playerid, \"{FFFFFF}A kiválasztott {FF0000}hotkey{FFFFFF} törölve!\");
}
}
}
}
}else{
return 1;
}
}
return 1;
}
public Hotkey_OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
/* format(stringy,sizeof(stringy),\"%d, %d\",newkeys,oldkeys);
msg(playerid,stringy);*/
if(newkeys != 0)
{
/* format(stringy,sizeof(stringy),\"hotkey_key[playerid][%d]: %s, %d\",Hotkey_KeyToIndex(newkeys),hotkey_key[playerid][Hotkey_KeyToIndex(newkeys)],Hotkey_KeyToIndex(newkeys));
msg(playerid,stringy);*/
if(strlen(hotkey_key[playerid][Hotkey_KeyToIndex(newkeys)]) != 0)
{
//msg(playerid,hotkey_key[playerid][Hotkey_KeyToIndex(newkeys)]);
zcmd_Command(playerid,hotkey_key[playerid][Hotkey_KeyToIndex(newkeys)]);
}
}
if(hotkey[playerid] == true)
{
if(strlen(Hotkey_DialogLenyomva(newkeys)) != 0)
{
GameTextForPlayer(playerid,Hotkey_DialogLenyomva(newkeys),5000,3);
KillTimer(hotkeytimer[playerid]);
hotkeytimer[playerid] = SetTimerEx(\"Hotkey_Timer\",5000,0,\"dd\",playerid,newkeys);
}
}
}
public Hotkey_OnPlayerDisconnect(playerid, reason)
{
if(hotkey[playerid] == true)
{
for(new i=0;i<66;i++)
{
Hotkey_Delete(playerid, i);
}
hotkey[playerid] = false;
KillTimer(hotkeytimer[playerid]);
}
}
// HOTKEY
COMMAND:hotkey(playerid, params[])
{
Hotkey_Menu(playerid);
return 1;
}
stock KettoHatvany(szam) return floatround(floatpower(2,szam),floatround_round);
stock KettoHatvanye(szam)
{
for(new i=0;i<15;i++) if(KettoHatvany(i) == szam) return true;
return false;
}
public Hotkey_Timer(playerid,keys)
{
// SendFormattedMessage(playerid,COLOR_WHITE,\"a hotkey: %d\",keys);
SetPVarInt(playerid,\"hotkey\",keys);
ShowPlayerDialog(playerid,HK_DIALOGID+1,1,\":: Hotkey beállítás ::\",\"Írd be, hogy mit csináljon a megadott kombinációra (parancs):\",\"Oké\",\"Mégse\");
return 1;
}
stock Hotkey_Dialog(playerid)
{
ShowPlayerDialog(playerid,HK_DIALOGID,0,\":: Hotkey készítés ::\",\"Kattints a készítésre, aztán\\nnyomd le a billentyûkombinációt és 5 mp.\\nután beállíthatsz rá egy hotkeyt.\",\"Készítés\",\"Mégse\");
}
stock Hotkey_Menu(playerid)
{
new temp[100];
format(stringx, sizeof stringx, \"Hotkey rendszer leírás\\nLétrehozás\\n\");
for(new i=0;i<66;i++)
{
if(strlen(hotkey_key[playerid]) != 0)
{
format(temp, 100, \"{FF0000}Törlés{FFFFFF} - %s (%s)\", hotkey_key[playerid], Hotkey_KeyName(i));
strcat(stringx, temp);
strcat(stringx, \"\\n\");
}
}
ShowPlayerDialog(playerid,HK_DIALOGID+2,LIST,\":: Hotkey ::\",stringx,\"Oké\",\"Mégse\");
}
stock Hotkey_DialogLenyomva(keys)
{
/* 1 - Akció
2 - Guggolás
4 - Ütés
8 - Sprint
16 - Enter/Exit
32 - Ugrás
64 -
128 - Célzás
256 -
512 - Hátranézés
1024 - Gyaloglás
2056 -
4112 -
8192 - 4-es gomb
16384 - 6-os gomb
*/
new hklist[15][12]={
\"Akció\",\"Guggolás\",\"Ütés\",\"Sprint\",\"Enter/Exit\",\"Ugrás\",\"Nincs\",\"Célzás\",
\"Nincs\",\"Hátranézés\",\"Gyaloglás\",\"Nincs\",\"Nincs\",\"4-es gomb\",\"6-os gomb\"
};
stringx=\"\\0\";
for(new i=14;i>=0;i--)
{
if(KettoHatvanye(keys))
{
new idx = floatround(floatlog(keys,2),floatround_round);
format(stringz,sizeof(stringz),\"~r~%s\",hklist[idx]);
// print(stringz);
strins(stringx,stringz,strlen(stringx));
// printf(\"%d %d\",keys,floatround(floatlog(keys,2),floatround_round));
break;
}
if(keys - KettoHatvany(i) > 0)
{
keys -= KettoHatvany(i);
format(stringz,sizeof(stringz),\"~r~%s~n~~w~+~n~\",hklist);
// print(stringz);
strins(stringx,stringz,strlen(stringx));
// printf(\"%d %d\",KettoHatvany(i),i);
}
}
return stringx;
}
stock Hotkey_Delete(playerid, hotkeyid)
{
format(hotkey_key[playerid][hotkeyid], 32, \"\");
}
stock Hotkey_KeyName(indexedkey)
{
new Key_Name[32];
switch(indexedkey)
{
case 0: format(Key_Name, 32, \"akció\");
case 1: format(Key_Name, 32, \"guggolás\");
case 2: format(Key_Name, 32, \"akció+guggolás\");
case 3: format(Key_Name, 32, \"ütés\");
case 4: format(Key_Name, 32, \"ütés+akció\");
case 5: format(Key_Name, 32, \"ütés+guggolás\");
case 6: format(Key_Name, 32, \"sprint\");
case 7: format(Key_Name, 32, \"sprint+akció\");
case 8: format(Key_Name, 32, \"sprint+guggolás\");
case 9: format(Key_Name, 32, \"sprint+ütés\");
case 10: format(Key_Name, 32, \"enter\");
case 11: format(Key_Name, 32, \"enter+akció\");
case 12: format(Key_Name, 32, \"enter+guggolás\");
case 13: format(Key_Name, 32, \"enter+ütés\");
case 14: format(Key_Name, 32, \"enter+sprint\");
case 15: format(Key_Name, 32, \"ugrás\");
case 16: format(Key_Name, 32, \"ugrás+akció\");
case 17: format(Key_Name, 32, \"ugrás+guggolás\");
case 18: format(Key_Name, 32, \"ugrás+ütés\");
case 19: format(Key_Name, 32, \"ugrás+sprint\");
case 20: format(Key_Name, 32, \"ugrás+enter\");
case 21: format(Key_Name, 32, \"célzás\");
case 22: format(Key_Name, 32, \"célzás+akció\");
case 23: format(Key_Name, 32, \"célzás+guggolás\");
case 24: format(Key_Name, 32, \"célzás+ütés\");
case 25: format(Key_Name, 32, \"célzás+sprint\");
case 26: format(Key_Name, 32, \"célzás+enter\");
case 27: format(Key_Name, 32, \"célzás+ugrás\");
case 28: format(Key_Name, 32, \"hátranézés\");
case 29: format(Key_Name, 32, \"hátranézés+akció\");
case 30: format(Key_Name, 32, \"hátranézés+guggolás\");
case 31: format(Key_Name, 32, \"hátranézés+ütés\");
case 32: format(Key_Name, 32, \"hátranézés+sprint\");
case 33: format(Key_Name, 32, \"hátranézés+enter\");
case 34: format(Key_Name, 32, \"hátranézés+ugrás\");
case 35: format(Key_Name, 32, \"hátranézés+célzás\");
case 36: format(Key_Name, 32, \"gyaloglás\");
case 37: format(Key_Name, 32, \"gyaloglás+akció\");
case 38: format(Key_Name, 32, \"gyaloglás+guggolás\");
case 39: format(Key_Name, 32, \"gyaloglás+ütés\");
case 40: format(Key_Name, 32, \"gyaloglás+sprint\");
case 41: format(Key_Name, 32, \"gyaloglás+enter\");
case 42: format(Key_Name, 32, \"gyaloglás+ugrás\");
case 43: format(Key_Name, 32, \"gyaloglás+célzás\");
case 44: format(Key_Name, 32, \"gyaloglás+hátranézés\");
case 45: format(Key_Name, 32, \"4\");
case 46: format(Key_Name, 32, \"4+akció\");
case 47: format(Key_Name, 32, \"4+guggolás\");
case 48: format(Key_Name, 32, \"4+ütés\");
case 49: format(Key_Name, 32, \"4+sprint\");
case 50: format(Key_Name, 32, \"4+enter\");
case 51: format(Key_Name, 32, \"4+ugrás\");
case 52: format(Key_Name, 32, \"4+célzás\");
case 53: format(Key_Name, 32, \"4+hátranézés\");
case 54: format(Key_Name, 32, \"4+gyaloglás\");
case 55: format(Key_Name, 32, \"6\");
case 56: format(Key_Name, 32, \"6+akció\");
case 57: format(Key_Name, 32, \"6+guggolás\");
case 58: format(Key_Name, 32, \"6+ütés\");
case 59: format(Key_Name, 32, \"6+sprint\");
case 60: format(Key_Name, 32, \"6+enter\");
case 61: format(Key_Name, 32, \"6+ugrás\");
case 62: format(Key_Name, 32, \"6+célzás\");
case 63: format(Key_Name, 32, \"6+hátranézés\");
case 64: format(Key_Name, 32, \"6+gyaloglás\");
case 65: format(Key_Name, 32, \"6+4\");
}
if(strlen(Key_Name) == 0) { format(Key_Name, 32, \"ismeretlen gomb\"); }
return Key_Name;
}
stock Hotkey_KeyToIndex(key)
{
switch(key)
{
case 1: return 0; // akció
case 2: return 1; // guggolás
case 3: return 2; // akció+guggolás
case 4: return 3; // ütés
case 5: return 4; // ütés+akció
case 6: return 5; // ütés+guggolás
case 8: return 6; // sprint
case 9: return 7; // sprint+akció
case 10: return 8;// sprint+guggolás
case 12: return 9;// sprint+ütés
case 16: return 10; // enter
case 17: return 11; // enter+akció
case 18: return 12; // enter+guggolás
case 20: return 13; // enter+ütés
case 24: return 14; // enter+sprint
case 32: return 15; // ugrás
case 33: return 16; // ugrás+akció
case 34: return 17; // ugrás+guggolás
case 36: return 18; // ugrás+ütés
case 40: return 19; // ugrás+sprint
case 48: return 20; // ugrás+enter
case 128: return 21; // célzás
case 129: return 22; // célzás+akció
case 130: return 23; // célzás+guggolás
case 132: return 24; // célzás+ütés
case 136: return 25; // célzás+sprint
case 144: return 26; // célzás+enter
case 160: return 27; // célzás+ugrás
case 512: return 28; // hátranézés
case 513: return 29; // hátranézés+akció
case 514: return 30; // hátranézés+guggolás
case 516: return 31; // hátranézés+ütés
case 520: return 32; // hátranézés+sprint
case 528: return 33; // hátranézés+enter
case 544: return 34; // hátranézés+ugrás
case 640: return 35; // hátranézés+célzás
case 1024: return 36; // gyaloglás
case 1025: return 37; // gyaloglás+akció
case 1026: return 38; // gyaloglás+guggolás
case 1028: return 39; // gyaloglás+ütés
case 1032: return 40; // gyaloglás+sprint
case 1040: return 41; // gyaloglás+enter
case 1056: return 42; // gyaloglás+ugrás
case 1152: return 43; // gyaloglás+célzás
case 1536: return 44; // gyaloglás+hátranézés
case 8192: return 45; // 4
case 8193: return 46; // 4+akció
case 8194: return 47; // 4+guggolás
case 8196: return 48; // 4+ütés
case 8200: return 49; // 4+sprint
case 8208: return 50; // 4+enter
case 8224: return 51; // 4+ugrás
case 8320: return 52; // 4+célzás
case 8704: return 53; // 4+hátranézés
case 9216: return 54; // 4+gyaloglás
case 16384: return 55; // 6
case 16385: return 56; // 6+akció
case 16386: return 57; // 6+guggolás
case 16388: return 58; // 6+ütés
case 16392: return 59; // 6+sprint
case 16400: return 60; // 6+enter
case 16416: return 61; // 6+ugrás
case 16512: return 62; // 6+célzás
case 16896: return 63; // 6+hátranézés
case 17408: return 64; // 6+gyaloglás
case 24576: return 65; // 6+4
}
return -1;
}
// HOTKEY VÉGE
(Jex azt mondta nekünk nem érdekli mit csinálunk a munkáival, ezért gondolom nem kell kérni a beleegyezését.)
Üdv,
P3ti.