GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => A témát indította: kamionos - 2014. március 01. - 01:06:11

Cím: Dialogos Idõ
Írta: kamionos - 2014. március 01. - 01:06:11
Sziasztok!
Készülõ szerveremre készítettem egy FS-t,de annyira nem láttam értelmét hogy berakjam(Még gondolkodok rajta)
ezért úgy döntöttem hogy felteszem ide elsõ publikálás ként :)
Igazából ez egy olyan dolog amit VÉGRE egyedül képes voltam megcsinálni :))
Remélem az olyanoknak mint én tehát tanuló szkriptereknek jól jön!
Lényeg:
A cucc lényege hogy az idõt tudod vele változtatni 1 tõl 24 óráig!
Annyira nem lett túlcsicsázva,a lényegnek megfelel :)!
Tesztelve lett! Mûködik.
Készitõ:Én(Hanga)
Készítési idõ:kb. 4 perc(Nem számoltam)
Kód:
 

//Idõ változtató
//Készítette:Hanga(Dead Space)
//Készítési idõ:kb. 4 perc
//Használjátok egészséggel! :)
#include a_samp
#include zcmd
#define time    1000
#define zöld 0x00FF00FF
CMD:time(playerid)
{
    ShowPlayerDialog(playerid, time, DIALOG_STYLE_LIST, \"{00ff00}Idõ kiválasztó\", \"1 óra\\n2 óra\\n3 óra\\n4 óra\\n5 óra\\n6 óra\\n7 óra\\n8 óra\\n9 óra\\n10 óra\\n11 óra\\n12 óra\\n13 óra\\n14 óra\\n15 óra\\n16 óra\\n17 óra\\n18 óra\\n19 óra\\n20 óra\\n21 óra\\n22 óra\\n23 óra\\n24 óra\", \"Kiválaszt\", \"Kilép\");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == time )
{
    switch(listitem)
    {
        case 0:
        {
      SetPlayerTime(playerid, 1, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 1 órára!\");
        }
        case 1:
        {
      SetPlayerTime(playerid, 2, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 2 órára!\");
        }
        case 2:
   {
      SetPlayerTime(playerid, 3, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 3 órára!\");
   }
   case 3:
   {
      SetPlayerTime(playerid, 4, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 4 órára!\");
   }
   case 4:
   {
      SetPlayerTime(playerid, 5, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 5 órára!\");
   }
   case 5:
            {
      SetPlayerTime(playerid, 6, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 6 órára!\");
            }
            case 6:
            {
      SetPlayerTime(playerid, 7, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 7 órára!\");
            }
            case 7:
            {
      SetPlayerTime(playerid, 8, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 8 órára!\");
   }
   case 8:
            {
      SetPlayerTime(playerid, 9, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 9 órára!\");
   }
   case 9:
            {
      SetPlayerTime(playerid, 10, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 10 órára!\");
   }
   case 10:
            {
      SetPlayerTime(playerid, 11, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 11 órára!\");
   }
   case 11:
            {
      SetPlayerTime(playerid, 12, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 12 órára!\");
   }
   case 12:
            {
      SetPlayerTime(playerid, 13, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 13 órára!\");
   }
   case 13:
            {
      SetPlayerTime(playerid, 14, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 14 órára!\");
   }
   case 14:
            {
      SetPlayerTime(playerid, 15, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 15 órára!\");
   }
   case 15:
            {
      SetPlayerTime(playerid, 16, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 16 órára!\");
   }
   case 16:
            {
      SetPlayerTime(playerid, 17, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 17 órára!\");
   }
   case 17:
            {
      SetPlayerTime(playerid, 18, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 18 órára!\");
   }
   case 18:
            {
      SetPlayerTime(playerid, 19, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 19 órára!\");
   }
   case 19:
            {
      SetPlayerTime(playerid, 20, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 20 órára!\");
   }
   case 20:
            {
      SetPlayerTime(playerid, 21, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 21 órára!\");
   }
   case 21:
            {
      SetPlayerTime(playerid, 22, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 22 órára!\");
   }
   case 22:
            {
      SetPlayerTime(playerid, 23, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 23 órára!\");
   }
   case 23:
            {
      SetPlayerTime(playerid, 24, 0);
            SendClientMessage(playerid, zöld, \"Idõ sikeresen átállítva 24 órára!\");
   }
}
}
return 1;
}

 
Bocs az elcsúszásokért...valamiért torzítja a fórum :/
Cím: Dialogos Idõ
Írta: TheDon - 2014. március 01. - 05:46:51
Egyszerübb pett volna ha switch helyett csak listitem+1 értékre váltod az idõt.
Cím: Dialogos Idõ
Írta: BoOy - 2014. március 01. - 18:58:23
Idézetet írta: TheDon date=1393649211\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46796\" data-ipsquote-contentclass=\"forums_Topic
Egyszerübb pett volna ha switch helyett csak listitem+1 értékre váltod az idõt.
 
Igen.. sokkal egyszerûbb :D
 
#include a_samp
#include zcmd
#define DIALOG_TIME    1000
#define zöld 0x00FF00FF
CMD:time(playerid)
{
new string[128];
for(new x = 1;x<24;x++) format(string,sizeof(string),\"%s%d óra\\n\",string,x);
    ShowPlayerDialog(playerid, DIALOG_TIME, DIALOG_STYLE_LIST, \"{00ff00}Idõ kiválasztó\", string, \"Választ\", \"Kilép\");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_TIME)
    {
if(response)
{
    new str[128];
    format(str,sizeof(str),\"Idõ sikeresen átállítva %d órára!\",listitem+1);
   SetPlayerTime(playerid,listitem+1);
   SendClientMessage(playerid,zöld,str);
}
    }
    return 1;
}
Cím: Dialogos Idõ
Írta: kamionos - 2014. március 01. - 21:21:57
Ja látom,zsir.
de még csak tanulom.
ciklusokat meg nem tok irni
Cím: Dialogos Idõ
Írta: Pedró - 2014. március 01. - 21:39:07
1. Definícióban nem lehet ékezetes karakter.
2. A kódod valójában sokat nem ér.. Gondoljunk bele.. Egy felhasználó minél gyorsabban szeretné beállítani magának a dolgokat.. Beleértve az idõt is.. Szerintem ez elég idõigényes, hogy beírja a parancsot, majd a listából ki kell választania az órát.. Lehetne sima parancsos is (/time [óra]) vagy INPUT-os is (Be kellene írnia az órát).. Másrészt sorpazarlás az egész.
3. BoOy te pedig nem veszed észre az 1. számú hibaészrevételemet.. Nem szép dolog. :p Egyébként a tied se pontos, miért ne lehetne 0 órát kiválasztani? (egyébként a ciklusod alapján 1-tõl 23-ig fogja listázni.. Hol marad az éjfél?)
Szerintem így lenne a legegyszerûbb a listás verzióban ( Nem másabb BoOy megoldásánál, viszont én is ugyanilyen alapon oldanám meg máskor is. :p ):
 
#define FILTERSCRIPT
#include <a_samp>
#include <zcmd>
#define DIALOG_TIME 4096
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(dialogid == DIALOG_TIME && response) {
    new string[144];
    format(string, sizeof(string), \"Az idõd sikeresen meg lett változtatva {FFFFFF}%02i:00{00FF00}-ra/re.\", listitem);
    SendClientMessage(playerid, 0x00FF00FF, string);
    SetPlayerTime(playerid, listitem, 0);
    return 1;
}
return 0;
}
CMD:time(playerid) {
new string[256];
for(new x; x < 24; x++) format(string, sizeof(string), \"%s%02i:00\\n\", string, x);
ShowPlayerDialog(playerid, DIALOG_TIME, DIALOG_STYLE_LIST, \"Válaszd ki az idõpontot!\", string, \"Tovább\", \"Mégse\");
return 1;
}

 
Lényegében elég kezdõ vagy, és nem ismersz sok módszert még.. :( Sok sikert a továbbiakban.
Egyébként te véletlenül nem Climacool vagy Aldo (vagymindkettõ) vagy véletlenül?
Cím: Dialogos Idõ
Írta: RDash - 2014. március 02. - 10:12:27
Szép munka grat.Lehet felhasználom. ;D
Cím: Dialogos Idõ
Írta: kamionos - 2014. március 03. - 20:16:54
Köszönöm! :D
Mellesleg.
Miért ne lehetne a definálásnál ékezetes betû ?? ???
Cím: Dialogos Idõ
Írta: TheDon - 2014. március 03. - 20:30:58
Mert programozni az Angol ABC betûivel kell. És abban nincs benne az ékezetes betû.
Cím: Dialogos Idõ
Írta: kamionos - 2014. március 04. - 15:55:11
Attol még ugyanolyan jó :)
Cím: Dialogos Idõ
Írta: Pedró - 2014. március 05. - 21:21:22
Nekem errort ír ki rá.
Cím: Dialogos Idõ
Írta: ZoleBB - 2014. március 05. - 21:23:21
Idézetet írta: Pedró date=1394050882\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46796\" data-ipsquote-contentclass=\"forums_Topic
Nekem errort ír ki rá.
 
Szintén
Cím: Dialogos Idõ
Írta: kamionos - 2014. június 09. - 16:46:57
nekem érdekes módon tökéletesen mûködik
Cím: Dialogos Idõ
Írta: kadaradam - 2014. június 09. - 18:03:29
Csak változót nem lehet deklarálni ékezetes karakterrel, definiálásnak mûködnie kéne.
Cím: Dialogos Idõ
Írta: KovaNovik - 2014. június 09. - 18:10:36
Nem lehet azért, mert nekik a zeex -féle compiler van?
Cím: Dialogos Idõ
Írta: adamvoke - 2014. június 27. - 12:39:56
Valakinek majd jol jön  :)
Cím: Dialogos Idõ
Írta: krisk - 2014. június 27. - 12:58:12
Szabványosan preprocesszor direktívában csak ASCII karakterek állhatnak, kivéve, ha definícióról beszélünk, és az a definíció stringre utal.
Cím: Dialogos Idõ
Írta: Sramm - 2014. június 27. - 14:45:06
Istenem, ez a legyen minél rövidebb mániátok.. Az elsõt még megértem, hiszen tényleg praktikusabb, és jó ha megmutatja, de utána miért kell ezt minden témában tovább fokozni, hogy én még több sort le tudok csípni belõle?  :facepalm:
Ennyi erõvel ezt a végtelenségig lehet fokozni:
 
#include <a_samp>
#include <zcmd>
new sstr[128];
CMD:time(playerid)
{
    for(new x = 1;x<24;x++) strcat(sstr,\"%d óra\\n\",x);
    ShowPlayerDialog(playerid, DIALOG_TIME, DIALOG_STYLE_LIST, \"{00ff00}Idõ kiválasztó\", sstr, \"Választ\", \"Kilép\");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 1000 && response)
{
SetPlayerTime(playerid,listitem+1);
format(sstr,sizeof(sstr),\"Az idõd sikeresen meg lett változtatva {FFFFFF}%02d:00{00FF00}-ra/re.\", listitem+1);
return SendClientMessage(playerid,0x00FF00FF,sstr);
}
    return 1;
}

 
Már az elsõ is tökéletes, az, hogy hol a response és egyéb hülyeségek nem számítanak..
Cím: Dialogos Idõ
Írta: krisk - 2014. június 27. - 14:52:16
Ez a különbség egy mérnök és egy matematikus között. A mérnök egy mûködõ megoldást akar, tök mindegy, hogy milyen áron. A matematikus egy mûvész, a legelegánsabb megoldást akarja megkeresni.
Szerintem semmi baj nincsen azzal, ha egy kódot általánosítunk és hatékonyabbá teszünk. Ha például hozzá kéne adni perceket is, nem csak órákat, akkor nagy probléma lenne az eredeti scripttel, míg a \"lecsípett\" kódokkal csak egy konstanst kéne átírni.
Cím: Dialogos Idõ
Írta: Sramm - 2014. június 27. - 14:55:09
Idézetet írta: krisk date=1403873536\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46796\" data-ipsquote-contentclass=\"forums_Topic
Ez a különbség egy mérnök és egy matematikus között. A mérnök egy mûködõ megoldást akar, tök mindegy, hogy milyen áron. A matematikus egy mûvész, a legelegánsabb megoldást akarja megkeresni.
Szerintem semmi baj nincsen azzal, ha egy kódot általánosítunk és hatékonyabbá teszünk. Ha például hozzá kéne adni perceket is, nem csak órákat, akkor nagy probléma lenne az eredeti scripttel, míg a \"lecsípett\" kódokkal csak egy konstanst kéne átírni.
 
Én ezt értem és elismerem, de szerintem elég egyszer \"hatékonnyá\" (Mert a mûködését nem befolyásolja..) tenni, nem 8x 1-1 esztétikai szempontot javítgatni, nem hiszem, hogy függene bármi attól, hogy a response melyik sorban van, ez már tényleg csak megszokás kérdése..
Cím: Dialogos Idõ
Írta: Pedró - 2014. július 31. - 18:35:58
Idézetet írta: Sramm date=1403873106\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"46796\" data-ipsquote-contentclass=\"forums_Topic
Istenem, ez a legyen minél rövidebb mániátok.. Az elsõt még megértem, hiszen tényleg praktikusabb, és jó ha megmutatja, de utána miért kell ezt minden témában tovább fokozni, hogy én még több sort le tudok csípni belõle?  :facepalm:
Ennyi erõvel ezt a végtelenségig lehet fokozni:
 
#include <a_samp>
#include <zcmd>
new sstr[128];
CMD:time(playerid)
{
    for(new x = 1;x<24;x++) strcat(sstr,\"%d óra\\n\",x);
    ShowPlayerDialog(playerid, DIALOG_TIME, DIALOG_STYLE_LIST, \"{00ff00}Idõ kiválasztó\", sstr, \"Választ\", \"Kilép\");
    return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == 1000 && response)
{
SetPlayerTime(playerid,listitem+1);
format(sstr,sizeof(sstr),\"Az idõd sikeresen meg lett változtatva {FFFFFF}%02d:00{00FF00}-ra/re.\", listitem+1);
return SendClientMessage(playerid,0x00FF00FF,sstr);
}
    return 1;
}

 
Már az elsõ is tökéletes, az, hogy hol a response és egyéb hülyeségek nem számítanak..
 
hibás lenne..
 
for(new x = 1;x<24;x++) strcat(sstr,\"%d óra\\n\",x);

 
elé még..
 
sstr[0] = EOS;
Cím: Dialogos Idõ
Írta: Flash - 2014. július 31. - 19:09:51
+ ezt:
[pawn]strcat(sstr,\"%d óra\\n\",x);[/pawn]
formatba kéne ágyazni nem? de.
Cím: Dialogos Idõ
Írta: Pedró - 2014. augusztus 02. - 12:04:01
Sramm nagyon beakart próbálkozni, de ez se sikerült . :PPPP
Cím: Dialogos Idõ
Írta: Sramm - 2014. augusztus 22. - 18:38:00
Látom a lényeget sikerült leszûrni  :slap: