Peršokti į turinį
Negalima prašyti ar platinti betkokių žaidimą (multiplayer) palengvinančių programų ir scriptų! Kitaip bus taikoma 1.21. taisyklė

[Skriptas] 3D text label dinaminė sistema [MYSQL]


DeividasG

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3664 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki, su šiuo skriptu jum bus lengviau kurti 3D text label's reikalingi pluginai (ZCMD,MYSQL,SSCANF) pradėkime.

 

1. Sukuriame #define. Skaičius 100 galime pakeisti tai maximalus 3D text labl'ų sukūrimo limitas.

#define     MAX_TEXT        (100)

2. Sukuriame enum'a modifikacijos viršuje.

enum

        textEnum
{
        t_string[228],
        Float: t_postion[3],
        t_color[23],
        t_id,
        Text3D: t_label
}

3. Sukuriame new'a modifikacijos viršuje prie visų new.

new

        tInfo[MAX_TEXT][textEnum],
        dbHandle;

4. Po public ongamemodeinit rašome.

        dbHandle = mysql_connect(DB_SERVER,DB_USER,DB_DB,DB_PASS);
        mysql_function_query(dbHandle,"CREATE TABLE IF NOT EXISTS textlabel(t_id_ int,t_text varchar(228),t_color_ varchar(23),t_x float,t_y float,t_z float",false,"","");
        mysql_function_query(dbHandle,"SELECT * FROM textlabel",false,"_loadTextLabel","");
        return 1;
}

5. Kuriame komandas kurių reikės kuriant 3D text label's tai kelti modifikacijos pabaigoje arba prie visų komandų šios komandos negali būti po onplayercommandtext.

COMMAND:sukurtitexta(playerid,params[])

{
        if(sscanf(params,"s[128]s[24]",params[0],params[1]))
            return SendClientMessage(playerid,-1,"[Naudojimas]: /sukurtitexta [tekstas] [spalva (red/blue/orange/green)]");

        if(tInfo[playerid][t_id] >= MAX_TEXT)
            return SendClientMessage(playerid,-1,"[Error]: tu nebegali kurti daugiau text'u nes viršijai kuriamų textų skaičių prašome pralaisvinti šiek tiek vietos textų kurimui!");

        new
            gQuery[356],
            Float: gPos[MAX_PLAYERS][3];
    tInfo[playerid][t_id] ++;
        GetPlayerPos(playerid,gPos[playerid][0],gPos[playerid][1],gPos[playerid][2]);
        if(!strcmp(params[1],"red",true))
            return format(gQuery,356,"INSERT INTO textlabel (t_id_,t_text,t_color_,t_x,t_y,t_z) VALUES(%d,%s,%s,%f,%f,%f)",tInfo[playerid][t_id],"red",gPos[playerid][0],gPos[playerid][1],gPos[playerid][2]);
        else if(!strcmp(params[1],"blue",true))
            return format(gQuery,356,"INSERT INTO textlabel (t_id_,t_text,t_color_,t_x,t_y,t_z) VALUES(%d,%s,%s,%f,%f,%f)",tInfo[playerid][t_id],"blue",gPos[playerid][0],gPos[playerid][1],gPos[playerid][2]);
        else if(!strcmp(params[1],"orange",true))
            return format(gQuery,356,"INSERT INTO textlabel (t_id_,t_text,t_color_,t_x,t_y,t_z) VALUES(%d,%s,%s,%f,%f,%f)",tInfo[playerid][t_id],"orange",gPos[playerid][0],gPos[playerid][1],gPos[playerid][2]);
        else if(!strcmp(params[1],"green",true))
            return format(gQuery,356,"INSERT INTO textlabel (t_id_,t_text,t_color_,t_x,t_y,t_z) VALUES(%d,%s,%s,%f,%f,%f)",tInfo[playerid][t_id],params[0],"green",gPos[playerid][0],gPos[playerid][1],gPos[playerid][2]);
        mysql_function_query(dbHandle,gQuery,false,"","");
    for(new i,j = MAX_TEXT; i != j; i++) tInfo[i][t_id] ++;
        if(!strcmp(params[1],"blue",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[0],0x1492EDFF,gPos[playerid][0],gPos[playerid][1],gPos[playerid][2],40.0,0,0);
        if(!strcmp(params[1],"red",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[0],0xED1414FF,gPos[playerid][0],gPos[playerid][1],gPos[playerid][2],40.0,0,0);
        if(!strcmp(params[1],"green",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[0],0x25ED14FF,gPos[playerid][0],gPos[playerid][1],gPos[playerid][2],40.0,0,0);
        if(!strcmp(params[1],"orange",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[0],0xED9614FF,gPos[playerid][0],gPos[playerid][1],gPos[playerid][2],40.0,0,0);
        SendClientMessage(playerid,-1,"[Sukurta]: sėkimgai sukūrėte 3D text label!");

        return 1;
}


COMMAND:naikintitexta(playerid,params[])

{
        if(sscanf(params,"d",params[0]))
            return SendClientMessage(playerid,-1,"[Naudojimas]: /naikintitexta [Texto ID]");

        new gQuery[128];
        format(gQuery,128,"DELETE FROM textlabel WHERE t_id_='%d'",params[0]);
    mysql_function_query(dbHandle,gQuery,false,"","");
    Delete3DTextLabel(tInfo[playerid][t_label]);
    SendClientMessage(playerid,-1,"[Sunaikinta]: sėkmigai sunaikinote text'a!");

        return 1;
}


COMMAND:koreguotitexta(playerid,params[])

{
        for(new i,j = MAX_TEXT; i != j; i++)
        {
                if(!IsPlayerInRangeOfPoint(playerid,5.0,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2])) continue;
                if(sscanf(params,"d",params[0],params[1]))
                    return SendClientMessage(playerid,-1,"[Naudojimas]: /koreguotitexta [Texto ID] [Tekstas]");

                new gQuery[237];
                format(gQuery,237,"UPDATE textlabel SET t_text='%s' WHERE t_id_='%d'",params[1],params[0]);
                mysql_function_query(dbHandle,gQuery,false,"","");
                Delete3DTextLabel(tInfo[playerid][t_label]);
                if(!strcmp(params[1],"blue",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[1],0x1492EDFF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
                if(!strcmp(params[1],"red",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[1],0xED1414FF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
                if(!strcmp(params[1],"green",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[1],0x25ED14FF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
                if(!strcmp(params[1],"orange",true)) tInfo[playerid][t_label] = Create3DTextLabel(params[1],0xED9614FF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
        }
        SendClientMessage(playerid,-1,"[Sukoreguotas]: sėkmingai pataisėte tekst'ą!");

        return 1;
}

6. Sukuriame text label'io saugojima.

forward _loadTextLabel();

public _loadTextLabel()
{
        for(new i,j = MAX_TEXT; i != j; i++)
        {
                cache_get_field_content(0,"t_text",tInfo[i][t_string],dbHandle);
                cache_get_field_content(0,"t_color_",tInfo[i][t_color],dbHandle);
                tInfo[i][t_postion][0] = cache_get_field_content_float(0,"t_x",dbHandle);
                tInfo[i][t_postion][1] = cache_get_field_content_float(0,"t_x",dbHandle);
                tInfo[i][t_postion][2] = cache_get_field_content_float(0,"t_x",dbHandle);
                tInfo[i][t_id] = cache_get_field_content_int(0,"t_id_",dbHandle);
        }
        SetTimer("_loadTextAllTextLabel",2000,false);
        return 1;
}

7. Sukuriame visų label'ų saugojima.

forward _loadTextAllTextLabel();

public _loadTextAllTextLabel()
{
        for(new i,j = MAX_TEXT; i != j; i++)
        {
                if(!strcmp(tInfo[i][t_color],"blue",true)) tInfo[i][t_label] = Create3DTextLabel(tInfo[i][t_string],0x1492EDFF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
                if(!strcmp(tInfo[i][t_color],"red",true)) tInfo[i][t_label] = Create3DTextLabel(tInfo[i][t_string],0xED1414FF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
                if(!strcmp(tInfo[i][t_color],"green",true)) tInfo[i][t_label] = Create3DTextLabel(tInfo[i][t_string],0x25ED14FF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
                if(!strcmp(tInfo[i][t_color],"orange",true)) tInfo[i][t_label] = Create3DTextLabel(tInfo[i][t_string],0xED9614FF,tInfo[i][t_postion][0],tInfo[i][t_postion][1],tInfo[i][t_postion][2],40.0,0,0);
        }
        return 1;
}

Prašome naudotis į sveikatą, laukiu šio forumo scripterių nuomonės ačiū.

 

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3664 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...