[PEDIDO] sistema de carros
#1

Tipo, um que o player comprasse quando tivesse no carro, e salvasse no dini o nome do jogador, a posiзгo do carro e o model, e se tivesse sido comprado, retornasse uma msg dizendo que nao podia comprar. Vi um no tutorial do scripting discurs, mas nao tinha comando. =x
Reply
#2

Quote:
Originally Posted by blackwave
Посмотреть сообщение
Tipo, um que o player comprasse quando tivesse no carro, e salvasse no dini o nome do jogador, a posiзгo do carro e o model, e se tivesse sido comprado, retornasse uma msg dizendo que nao podia comprar. Vi um no tutorial do scripting discurs, mas nao tinha comando. =x
Quer Cafй tambйm ? Acho que um queijo cairia muito bem.
Reply
#3

Quote:
Originally Posted by [Banido]HigorOliver
Посмотреть сообщение
Quer Cafй tambйm ? Acho que um queijo cairia muito bem.
Esqueзeu do leite :O!
Reply
#4

Quote:
Originally Posted by faeldk
Посмотреть сообщение
Esqueзeu do leite :O!
affz, eu tenho o FS, so preciso disso de salvar e de como comprar:
Код:
/*

****************** CAR OWNERSHIP FILTERSCRIPT **********************************

*/
#include <a_samp>
#include <dini>

#define FILTERSCRIPT

new bool:validcar[MAX_VEHICLES];

stock GetFreeVehicleSlot()
{
    for(new i = 0; i < sizeof(validcar); i ++)
    {
        if(!validcar[i]) return i;
    }
    return -1;
}

enum carDataEnum {        
    model,
    Float:xspawn,
    Float:yspawn,
    Float:zspawn,
    Float:anglespawn,
    col1,
    col2,
    respawn,
    owner[20]
}

new carData[MAX_VEHICLES][carDataEnum];

stock CreateVehicleEx(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawntime, ownername[20])
{
    
    new carid = GetFreeVehicleSlot();
    carData[carid][model] = modelid;
    carData[carid][xspawn] = x;
    carData[carid][yspawn] = y;
    carData[carid][zspawn] = z;
    carData[carid][anglespawn] = angle;
    carData[carid][col1] = color1;
    carData[carid][col2] = color2;
    carData[carid][respawn] = respawntime;
    carData[carid][owner] = ownername;
    validcar[carid] = true;
    CreateVehicle(modelid, x, y, z, angle, color1, color2, respawntime);
    return carid;         
}

stock SaveVehicle(vehicle, filename[36])
{
    new iniid = ini_CreateIniFile(filename);
    ini_SetInt(iniid, "Model", carData[vehicle][model]);
    ini_SetFloat(iniid, "XSpawn", carData[vehicle][xspawn]);
    ini_CloseIni(iniid);
}

stock SaveAllVehicles()
{
    new saveindex = 0;
    new fname[36];
    for(new i = 0; i < MAX_VEHICLES; i ++)
    {
        if(validcar[i])
        {
            format(fname, sizeof(fname), "fvehicles/%d.ini", saveindex);  //You can also add a subfolder here<.
            SaveVehicle(i, fname);
            saveindex ++; 
        }
}

stock LoadVehicle(filename[36])
{
    new iniid = ini_OpenIni(filename);
    CreateVehicleEx(ini_GetInt(iniid, "Model"), ini_GetFloat(iniid, "XSpawn"), ...);
    ini_CloseIni(iniid);
}

stock LoadAllVehicles()
{
    new fname[36];
    new index = 0;
    format(fname, sizeof(fname), "%d.ini", index);
    while(fexist(fname))  
    {
        LoadVehicle(fname);
        index ++;
        format(fname, sizeof(fname), "%d.ini", index);
    }
}

public OnFilterScriptInit()
{
	printf("****************** CAR OWNERSHIP FILTERSCRIPT **********************************");
	return 1;
}

public OnFilterScriptExit()
{
   	printf("****************** CAR OWNERSHIP FILTERSCRIPT **********************************");
	return 1;
}




public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/buy, cmdtext, true, 10) == 0)
	{
		new id = GetPlayerVehicleID(playerid);
        if(IsPlayerInAnyVehicle(playerid) && validcar[id] == true)
        {

		return 1;
	}
	return 0;
}
Reply
#5

Bom, fiz arrumei seu comando como vocк pediu, ele agora "compra" o carro e salva as informaзхes desse nas scriptfiles.


pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/buy", cmdtext, true, 10) == 0)
    {
        new NomedoComprador[MAX_PLAYER_NAME];
        new IdDoCarro = GetPlayerVehicleID(playerid);
        GetPlayerName(playerid, NomedoComprador, sizeof(NomedoComprador));
        if(IsPlayerInAnyVehicle(playerid))
        {
            carData[IdDoCarro][owner] = NomedoComprador;
            SaveAllVehicles();
            return 1;
        }
    }
    return 0;
}
Nota: Й possнvel comprar qualquer carro no jogo usando o comando acima, pois o cуdigo apresentado por vocк nгo faz restriзгo б certos carros. Se quiser restringir o comando б determinados veнculos, vocк pode fazer isso com base nos IDs dos mesmos ou na criaзгo de variбveis que se igualem б eles.



Espero ter ajudado
Reply
#6

Ficou assim:
Код:
/*

****************** CAR OWNERSHIP FILTERSCRIPT **********************************

*/
#include <a_samp>
#include <dini>


#define FILTERSCRIPT

new bool:validcar[MAX_VEHICLES];

stock GetFreeVehicleSlot()
{
    for(new i = 0; i < sizeof(validcar); i ++)
    {
        if(!validcar[i]) return i;
    }
    return -1;
}

enum carDataEnum {        
    model,
    Float:xspawn,
    Float:yspawn,
    Float:zspawn,
    Float:anglespawn,
    col1,
    col2,
    respawn,
    owner[20]
}

new carData[MAX_VEHICLES][carDataEnum];

stock CreateVehicleEx(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawntime, ownername[20])
{
    
    new carid = GetFreeVehicleSlot();
    carData[carid][model] = modelid;
    carData[carid][xspawn] = x;
    carData[carid][yspawn] = y;
    carData[carid][zspawn] = z;
    carData[carid][anglespawn] = angle;
    carData[carid][col1] = color1;
    carData[carid][col2] = color2;
    carData[carid][respawn] = respawntime;
    carData[carid][owner] = ownername;
    validcar[carid] = true;
    CreateVehicle(modelid, x, y, z, angle, color1, color2, respawntime);
    return carid;         
}

stock SaveVehicle(vehicle, filename[36])
{
    new iniid = ini_CreateIniFile(filename);
    ini_SetInt(iniid, "Model", carData[vehicle][model]);
    ini_SetFloat(iniid, "XSpawn", carData[vehicle][xspawn]);
    ini_CloseIni(iniid);
}

stock SaveAllVehicles()
{
    new saveindex = 0;
    new fname[36];
    for(new i = 0; i < MAX_VEHICLES; i ++)
    {
        if(validcar[i])
        {
            format(fname, sizeof(fname), "fvehicles/%d.ini", saveindex);  //You can also add a subfolder here<.
            SaveVehicle(i, fname);
            saveindex ++; 
        }
	}
}

stock LoadVehicle(vehicle, filename[36])
{
    new iniid = ini_OpenIni(filename);
    CreateVehicleEx(ini_GetInt(iniid, "Model"), ini_GetFloat(iniid, "XSpawn"), ...);
    ini_CloseIni(iniid);
}

stock LoadAllVehicles()
{
    new fname[36];
    new index = 0;
    format(fname, sizeof(fname), "%d.ini", index);
    while(fexist(fname))  
    {
        LoadVehicle(fname);
        index ++;
        format(fname, sizeof(fname), "%d.ini", index);
    }
}

public OnFilterScriptInit()
{
	printf("****************** CAR OWNERSHIP FILTERSCRIPT **********************************");
	return 1;
}

public OnFilterScriptExit()
{
   	printf("****************** CAR OWNERSHIP FILTERSCRIPT **********************************");
	return 1;
}





public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/buy", cmdtext, true, 10) == 0)
    {
        new NomedoComprador[MAX_PLAYER_NAME];
        new IdDoCarro = GetPlayerVehicleID(playerid);
        GetPlayerName(playerid, NomedoComprador, sizeof(NomedoComprador));
        if(IsPlayerInAnyVehicle(playerid))
        {
            carData[IdDoCarro][owner] = NomedoComprador;
            SaveAllVehicles();
            return 1;
        }
    }
    return 0;
}
Deu errors no comando la:
Quote:

C:\DOCUME~1\FELIPE~1\Desktop\SERVER~1\FILTER~1\OWN ERS~1.PWN(57) : error 017: undefined symbol "ini_CreateIniFile"
C:\DOCUME~1\FELIPE~1\Desktop\SERVER~1\FILTER~1\OWN ERS~1.PWN(5 : error 017: undefined symbol "ini_SetInt"
C:\DOCUME~1\FELIPE~1\Desktop\SERVER~1\FILTER~1\OWN ERS~1.PWN(59) : error 017: undefined symbol "ini_SetFloat"
C:\DOCUME~1\FELIPE~1\Desktop\SERVER~1\FILTER~1\OWN ERS~1.PWN(60) : error 017: undefined symbol "ini_CloseIni"
C:\DOCUME~1\FELIPE~1\Desktop\SERVER~1\FILTER~1\OWN ERS~1.PWN(57) : warning 204: symbol is assigned a value that is never used: "iniid"
C:\DOCUME~1\FELIPE~1\Desktop\SERVER~1\FILTER~1\OWN ERS~1.PWN(123) : error 047: array sizes do not match, or destination array is too small
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


5 Errors.

Reply
#7

Quote:
Originally Posted by blackwave
Посмотреть сообщение
Ficou assim:
Код:
/*

****************** CAR OWNERSHIP FILTERSCRIPT **********************************

*/
#include <a_samp>
#include <dini>


#define FILTERSCRIPT

new bool:validcar[MAX_VEHICLES];

stock GetFreeVehicleSlot()
{
    for(new i = 0; i < sizeof(validcar); i ++)
    {
        if(!validcar[i]) return i;
    }
    return -1;
}

enum carDataEnum {        
    model,
    Float:xspawn,
    Float:yspawn,
    Float:zspawn,
    Float:anglespawn,
    col1,
    col2,
    respawn,
    owner[20]
}

new carData[MAX_VEHICLES][carDataEnum];

stock CreateVehicleEx(modelid, Float:x, Float:y, Float:z, Float:angle, color1, color2, respawntime, ownername[20])
{
    
    new carid = GetFreeVehicleSlot();
    carData[carid][model] = modelid;
    carData[carid][xspawn] = x;
    carData[carid][yspawn] = y;
    carData[carid][zspawn] = z;
    carData[carid][anglespawn] = angle;
    carData[carid][col1] = color1;
    carData[carid][col2] = color2;
    carData[carid][respawn] = respawntime;
    carData[carid][owner] = ownername;
    validcar[carid] = true;
    CreateVehicle(modelid, x, y, z, angle, color1, color2, respawntime);
    return carid;         
}

stock SaveVehicle(vehicle, filename[36])
{
    new iniid = ini_CreateIniFile(filename);
    ini_SetInt(iniid, "Model", carData[vehicle][model]);
    ini_SetFloat(iniid, "XSpawn", carData[vehicle][xspawn]);
    ini_CloseIni(iniid);
}

stock SaveAllVehicles()
{
    new saveindex = 0;
    new fname[36];
    for(new i = 0; i < MAX_VEHICLES; i ++)
    {
        if(validcar[i])
        {
            format(fname, sizeof(fname), "fvehicles/%d.ini", saveindex);  //You can also add a subfolder here<.
            SaveVehicle(i, fname);
            saveindex ++; 
        }
	}
}

stock LoadVehicle(vehicle, filename[36])
{
    new iniid = ini_OpenIni(filename);
    CreateVehicleEx(ini_GetInt(iniid, "Model"), ini_GetFloat(iniid, "XSpawn"), ...);
    ini_CloseIni(iniid);
}

stock LoadAllVehicles()
{
    new fname[36];
    new index = 0;
    format(fname, sizeof(fname), "%d.ini", index);
    while(fexist(fname))  
    {
        LoadVehicle(fname);
        index ++;
        format(fname, sizeof(fname), "%d.ini", index);
    }
}

public OnFilterScriptInit()
{
	printf("****************** CAR OWNERSHIP FILTERSCRIPT **********************************");
	return 1;
}

public OnFilterScriptExit()
{
   	printf("****************** CAR OWNERSHIP FILTERSCRIPT **********************************");
	return 1;
}





public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/buy", cmdtext, true, 10) == 0)
    {
        new NomedoComprador[MAX_PLAYER_NAME];
        new IdDoCarro = GetPlayerVehicleID(playerid);
        GetPlayerName(playerid, NomedoComprador, sizeof(NomedoComprador));
        if(IsPlayerInAnyVehicle(playerid))
        {
            carData[IdDoCarro][owner] = NomedoComprador;
            SaveAllVehicles();
            return 1;
        }
    }
    return 0;
}
Deu errors no comando la:

Algumas funзхes desse Filterscript nгo existem e se existem nгo estгo no FS. Nгo posso ajudб-lo, mas vendo o nome desses cуdigos, o autor do FS pareceu ter tentado renomear os cуdigos do Dini.
Reply
#8

So que se eu tirar o codigo que tu me deu, fica sem erros:
Код:
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase
Reply
#9

O problema nгo й o cуdigo que eu postei, mas sim a falta de funзхes como por exemplo ini_CloseIni, essas nгo existem em qualquer include, mas acredito que vocк possa refazer o sistema de salvamento utilizando corretamente as includes Dini ou File.


Dк uma olhada neste tutorial sobre Dini: Usando Dini [ Principal para Aprende-la ]


O motivo de ter compilado perfeitamente deve ser um Bug no pawno pelo fato de vбrias stocks e publics existirem mas nгo serem usadas.
Reply
#10

vei, dexa pra la msm. Nгo sei fazer isso, e nao tenho ainda essa noзгo. DPs eu msm tento.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)