Web3 First Person Shooter - Helping Each Other

@dpradell Hi David,

thank you very much for your detailed response. It makes a lot, lot more sense now. Thank you


I also noticed that SendEVMTransactionAsync is deprecated and there is a new SendTransactionAsync method. When I use the new method, I get this error:

Assets\Scripts\Moralis\ClaimNftController.cs(138,45): error CS1501: No overload for method ‘SendTransactionAsync’ takes 7 arguments
this is what I have now that gives the error,
string resp = await Moralis.SendTransactionAsync(“Rewards”, “mumbai”, “claimReward”, _walletAddress, gas, new HexBigInteger(“0x0”), pars);
and I think it should be formatted like this;;;
(string recipientAddress, HexBigInteger value, HexBigInteger gas = null, HexBigInteger gasPrice = null)

What should I change my variables to? I currently did (“Rewards”, gas, HexBigInteger(“0x0”), pars); and got the following error :
== Assets\Scripts\Moralis\ClaimNftController.cs(138,82): error CS1503: Argument 3: cannot convert from ‘object[]’ to ‘Nethereum.Hex.HexTypes.HexBigInteger’

thank you for all the help :slight_smile:

Hi @ardawarcraft,

I’m glad that I helped. And true, SendEvmTransactionAsync is deprectated in the new version of the SDK so I would use ExecuteContractFunction instead. For parameters, you will pass the same object pars as the function of the contract didn’t change, but some other parameters may vary.

I encourage you to watch the new Moralis Project video releasing tomorrow 10:00 am CET where I’m explaining exactly how to use this function with the new version of the SDK.

Cheers!

David

1 Like

Hi David!

I watched the video but I still have trouble writing a C# method for ExecuteContractFunction that does the claim, specifically using pars. But I get lots of errors and I do not really know how to structure it like
public async static UniTask ExecuteContractFunction(string contractAddress,
string abi,
string functionName,
object[] args,
HexBigInteger value,
HexBigInteger gas,
HexBigInteger gasPrice)
{
string result = null;
string gasValue = gas.Value.ToString();
string gasPriceValue = gasPrice.ToString();

        if (gasValue.Equals("0") || gasValue.Equals("0x0")) gasValue = "";
        if (gasPriceValue.Equals("0") || gasPriceValue.Equals("0x0")) gasPriceValue = "";

        try
        {

#if UNITY_WEBGL
string functionArgs = JsonConvert.SerializeObject(args);
result = await Web3GL.SendContract(functionName, abi, contractAddress, functionArgs, value.Value.ToString(), gasValue, gasPriceValue);
#else
// Retrieve from address, the address used to authenticate the user.
MoralisUser user = await Moralis.GetUserAsync();
string fromAddress = user.authData[“moralisEth”][“id”].ToString();

            Contract contractInstance = Web3Client.Eth.GetContract(abi, contractAddress);
            Function function = contractInstance.GetFunction(functionName);

            if (function != null)
            {
                result = await function.SendTransactionAsync(fromAddress, gas, value, args);
            }

#endif
}
catch (Exception exp)
{
Debug.Log($“Call to {functionName} failed due to: {exp.Message}”);
}

        return result;
    }

what would be a better way for me to call pars using ExecuteContractFunction because the names in the new video are different, I am not that experienced with connecting to the blockchain with Unity

Hey, this is a great tutorial.
I am trying to run it but failed. Anyone can help me?
The first step passed - Scanning QR code using my mobile wallet (Trust Wallet)
The second step is not passed. “please sign authentication message in your wallet”
I confirmed console logs. Here it is.

Sending sign request for 0x941ef5cce9d3889215e6f6eb8600864680f959f6 

[WebSocket] Exception Unexpected character encountered while parsing value: M. Path ‘’, line 0, position 0.



Hi @khk.cryptech and welcome to the community.

Try using MetaMask and have the Mumbai testnet imported with some funds in it:

Hello everyone! When transferring the files of this project to another project, I got two errors:(
The first:
Assets\NFT\ThirdParty\NavMeshComponents\Editor\NavMeshAssetManager.cs(44,73): CS1061 error: ‘PrefabStage’ does not contain a definition for ‘assetPath’ and could not find an available ‘assetPath’ extension method that accepts the first argument of type ‘PrefabStage’ (are you missing a using directive or an assembly reference?)

The second:
Assets\NFT\ThirdParty\NavMeshComponents\Editor\NavMeshAssetManager.cs(46,81): CS1061 error: ‘PrefabStage’ does not contain a definition for ‘assetPath’ and an available ‘assetPath’ extension method could not be found that accepts the first argument of type ‘PrefabStage’ (are you missing a using directive or an assembly reference?)

Screenshot of the error code:

Thank you in advance for your help!:slight_smile:

What files/folders did you copy over exactly and how did you do it?

Have you found the solution. I’m also stuck with the same problem. When tried to replace my own nft minted on opensea by changing the contract address and token id in ClaimNftcontroller editor, got invalid json rpc error failed eth transaction. Also when deployed ERC1155 smart contract after changing mint function to claimreward, and changed the details in constants.cs file, got claimreward function not found error.