Jump to content

Scripting help


Dayokun

Recommended Posts

Hey,

I've just started up a server, and i'm a total noob in scripting.

So I wanted to ask you guys if this is possible.

The freeroam resource that comes along with MTA has a really nice create funtion for car / skins.

Now I was wondering if there was an easy way to add a price to these items.

The code in vehicles.xml as it is looks like this :

  
        </group> 
        <group name="Planes, Jets and Airlines"> 
            <vehicle id="592" name="Andromada" /> 
  

This is also the same layout as with the skins.

Now I was wondering if this was possible in a similar way(This way won't work)

  
        </group> 
        <group name="Planes, Jets and Airlines"> 
            <vehicle id="592" name="Andromada"  price="1000" /> 
  

Where in price = 1000 dollars

I hope someone has an easy solution for this.

Thanks!

Link to comment

You need edit freeroam script. Adding price="1000" isn't way bcuz scripts don't know what's value and how to use it!

Easy example - if you want to add price to weapons you can use one thing without add prices to .xml file.

Just open file fr_server.xml and look at 283 line. There is function:

function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
        giveWeapon(source, weapon, amount, true) 
    end 
end 

And change it to:

function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
                local playerMoney = getPlayerMoney(source) 
                if(tonumber(weapon) == 28) then 
                      if(tonumber(playerMoney)  >= 1000)then 
                                takePlayerMoney(source, 1000) 
                        giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                else 
        giveWeapon(source, weapon, amount, true) 
                end 
    end 
end 

This code (maybe I didn't test) add price for Uzi (ID is 28), price is 1000$.

You can edit my code and add price for all weapons.

Link to comment

It won't save it but Dayokun don't want to save money to account data if I understand his post right. But if he wanna using account data money saving it's not much to do.... Just:

function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
                local playerMoney = getAccountData(getPlayerAccount (source), "server-money") 
                if(tonumber(weapon) == 28) then 
                      if(tonumber(playerMoney)  >= 1000)then 
                                newCash = playerMoney-1000 
                                setAccountData (getPlayerAccount (source), "server-money", newCash) 
                        giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                else 
        giveWeapon(source, weapon, amount, true) 
                end 
    end 
end 

Link to comment
It won't save it but Dayokun don't want to save money to account data if I understand his post right. But if he wanna using account data money saving it's not much to do.... Just:
function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
                local playerMoney = getAccountData(getPlayerAccount (source), "server-money") 
                if(tonumber(weapon) == 28) then 
                      if(tonumber(playerMoney)  >= 1000)then 
                                newCash = playerMoney-1000 
                                setAccountData (getPlayerAccount (source), "server-money", newCash) 
                        giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                else 
        giveWeapon(source, weapon, amount, true) 
                end 
    end 
end 

So if I understand correctly if I do this both the uzi and the pistol have a price?

function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
                local playerMoney = getAccountData(getPlayerAccount (source), "server-money") 
                if(tonumber(weapon) == 28) then 
                      if(tonumber(playerMoney)  >= 1000)then 
                                newCash = playerMoney-1000 
                                setAccountData (getPlayerAccount (source), "server-money", newCash) 
                        giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                                      local playerMoney = getAccountData(getPlayerAccount (source), "server-money") 
                if(tonumber(weapon) == 22) then 
                      if(tonumber(playerMoney)  >= 200)then 
                                newCash = playerMoney-200 
                                setAccountData (getPlayerAccount (source), "server-money", newCash) 
                        giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                else 
        giveWeapon(source, weapon, amount, true) 
                end 
    end 
end 

Link to comment

First thing, do you wanna take player money from his "bank account" or from his hands?

Secound thing, your thinking isn't right... how did you say "I'm a total noob" xD if you wanna make any scripts you should know anything about LUA but if you wanna know how to do this script I'll tell you. You did mistake... you must use:

function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
                local playerMoney = getPlayerMoney(source) 
                if(tonumber(weapon) == 28) then 
                      if(tonumber(playerMoney)  >= 1000)then 
                                takePlayerMoney(source, 1000) 
                        giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                elseif(tonumber(weapon) == 22) then 
                      if(tonumber(playerMoney)  >= 200)then 
                                takePlayerMoney(source, 200) 
                                giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                else 
        giveWeapon(source, weapon, amount, true) 
                end 
    end 
end 

When you wanna add any other weapon you need to add only:

elseif(tonumber(weapon) == 22) then 
                  if(tonumber(playerMoney)  >= 200)then 
                               takePlayerMoney(source, 200) 
                       giveWeapon(source, weapon, amount, true) 

be4 last word "else"! That's everything!

Link to comment
Read my next post, I said I'm not experienced in freeroaming and I don't use that way.

Proracer, this has nothing to do with "freeroam", this is a normal script.

By the way, why are you guys checking every weapon? why don't you create a table with the ID's/Prices?

Link to comment
Read my next post, I said I'm not experienced in freeroaming and I don't use that way.

Proracer, this has nothing to do with "freeroam", this is a normal script.

Yea.... LUA is LUA! But it's not important... we should help and don't talk about shit!

Link to comment
First thing, do you wanna take player money from his "bank account" or from his hands?

Secound thing, your thinking isn't right... how did you say "I'm a total noob" xD if you wanna make any scripts you should know anything about LUA but if you wanna know how to do this script I'll tell you. You did mistake... you must use:

function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
                local playerMoney = getPlayerMoney(source) 
                if(tonumber(weapon) == 28) then 
                      if(tonumber(playerMoney)  >= 1000)then 
                                takePlayerMoney(source, 1000) 
                        giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                elseif(tonumber(weapon) == 22) then 
                      if(tonumber(playerMoney)  >= 200)then 
                                takePlayerMoney(source, 200) 
                                giveWeapon(source, weapon, amount, true) 
                      else 
                                outputChatBox("You haven't enough money!", source, 255, 0, 0) 
                      end 
                else 
        giveWeapon(source, weapon, amount, true) 
                end 
    end 
end 

When you wanna add any other weapon you need to add only:

elseif(tonumber(weapon) == 22) then 
                  if(tonumber(playerMoney)  >= 200)then 
                               takePlayerMoney(source, 200) 
                       giveWeapon(source, weapon, amount, true) 

be4 last word "else"! That's everything!

Thanks :) I'll try that

Link to comment
Read my next post, I said I'm not experienced in freeroaming and I don't use that way.

Proracer, this has nothing to do with "freeroam", this is a normal script.

By the way, why are you guys checking every weapon? why don't you create a table with the ID's/Prices?

Dude, I never worked with that functions so I don't know what they will do...

They save money or not..?

Link to comment

The tables, proracer? if so, no, they are really good for this kind of stuff, so you can do.

  
myWeaponsTable = {{22,500},{31,9000},{24,5000}} 
  
function giveMeWeapon(weapon, amount) 
    if weapon > 50 then 
        return 
    end 
    if table.find(getOption('weapons.disallowed'), weapon) then 
        errMsg((getWeaponNameFromID(weapon) or tostring(weapon)) .. 's are not allowed', source) 
    else 
        local playerMoney = getPlayerMoney(source) 
        for i,v in pairs(myWeaponsTable) do 
        if(tonumber(weapon) == tonumber(v[1])) then 
        if(tonumber(playerMoney)  >= tonumber(v[2]))then 
        takePlayerMoney(source, tonumber(v[2])) 
        giveWeapon(source, weapon, amount, true) 
        else 
        outputChatBox("You haven't enough money, "..getWeaponNameFromID(tonumber(v[1])).." cost $"..tonumber(v[2]), source, 255, 0, 0) 
        return 
        end 
        end 
        end 
    end 
end 

Then when you want to add a new weapon you just add it to myWeaponsTable following the way i did.

Link to comment
Hey,

I've just started up a server, and i'm a total noob in scripting.

So I wanted to ask you guys if this is possible.

The freeroam resource that comes along with MTA has a really nice create funtion for car / skins.

Now I was wondering if there was an easy way to add a price to these items.

The code in vehicles.xml as it is looks like this :

  
        </group> 
        <group name="Planes, Jets and Airlines"> 
            <vehicle id="592" name="Andromada" /> 
  

This is also the same layout as with the skins.

Now I was wondering if this was possible in a similar way(This way won't work)

  
        </group> 
        <group name="Planes, Jets and Airlines"> 
            <vehicle id="592" name="Andromada"  price="1000" /> 
  

Where in price = 1000 dollars

I hope someone has an easy solution for this.

Thanks!

If you want to save your money in player account, you can use resource "Basic Save System" in community.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...